2011-12-10 13 views
1
で、私は、このページに取り組んでいます

を仕事にmouseleave()またはマウスアウトを()を取得できません:http://www.problemio.com/index_new.phpはjQueryの

あなたが「健康」リンクの上にマウス、私がポップアップするポップアップを得たが、それを閉じるのは苦労します。ここで

は、私がポップアップショーを補うためにやったことです:

$("<div id='pop'>" + div_contents + "</div>").dialog({ title: 'Secondary Categories'});    

、ここでは、私は近いそれを作るしようとしている方法です:

$('#hea_link').mouseout(function() 
{  
    $("#pop").dialog('close');     
}); 

$('#hea_link').mouseleave(function() 
{  
    $("#pop").dialog('close');     
}); 

私がしようとしている方法のいずれも、作品を閉じるためのポップアップを取得します。また、ポップアップの右上にあるxをクリックしても閉じないのはなぜかわかりません。

私がここで間違っているのは何ですか?

+0

あなたがマウスオーバーこれらのダイアログの1000年のように作っています。 * one *だけを作ろうとすれば、あなたのコードはうまくいくはずです。 – Blender

+0

FYI:複数のダイアログも開きます。新しいダイアログを作成する必要がありますが、可視性を切り替える必要があります。おそらく、ID beindが複数回使用されている問題もあります。 – Smamatti

+0

あなたのクローズxはこの例では機能しますが、ホバーすると2つのダイアログが開きます。だから、クリックを2回閉じる必要がありますか? –

答えて

2

あなたは、いくつかの問題を抱えて:

あなたが別の<div id='pop'></div>が作成されたリンクの上にマウスを移動するたびに。私はアップフロントダイアログを作成し、/隠し/必要に応じてそれを移入を示す推薦:

ページに次のHTMLを追加します。

<div id='pop' style='display:none'></div> 

そして、ページのロード時(document.readyまたは同様に):

$("#pop").dialog({ autoOpen: false }); 

あなたが持っている他の問題は、あなただけhover一つの関数を渡しているようにあなたのコードを見て、それが見えることです。つまり、機能はmouseentermouseleaveで実行されます。 hoverに二つの機能を渡します。この方法は、あなたがいずれかのmouseout/mouseleaveイベントリスナーを必要としないことを意味ホバーを使用して

$('#hea_link').hover(function() 
{  
    $("#pop").dialog('open');     
}, 
function() 
{ 
    $("#pop").dialog("close"); 
}); 

例:http://jsfiddle.net/jNq9X/