<a>
と<input>
タグには異なる動作が存在することに気付きました。
<div id="dialog">Your non-modal dialog</div>
<!--<a href="#" id="open">Open dialog</a>-->
<input id="open" value="Open dialog">
$('#open').click(function() {
$('#dialog').dialog('open');
});
$('#dialog').dialog({
autoOpen: false,
modal: false
});
// Close Pop-in If the user clicks anywhere else on the page
jQuery('html') //set for html for jsfiddle, but should be 'body'
.bind('click', function(e){
if (jQuery('#dialog').dialog('isOpen')
&& !jQuery(e.target).is('.ui-dialog, a')
&& !jQuery(e.target).closest('.ui-dialog').length)
{
jQuery('#dialog').dialog('close');
alert("close_dialog");
}
}
);
を使用している場合<a>
、クリック イベントはドキュメントに伝達されません。を使用している場合<input>
、クリック イベントはドキュメントにバブルされ、入力をクリックするとダイアログが直接閉じます。これは stopPropagation で処理できることを知っています。問題は、なぜ<a>
タグ イベントが発生しないのかということです。何か不足していますか?
ここにデモンストレーションするフィドルがあります。のコメントを外して<a>
をコメントし<input>
、それをクリックして違いを確認します。
この質問のジェイソンの回答から借用したコード。