0

jquery-ui ダイアログ (非モーダル ダイアログ) を使用しています。ユーザーがダイアログの外側をクリックした場合、ダイアログを閉じたい。このため、私はJquery Outside Events Pluginを使用しました。私もフィドルを作成しました:

http://jsbin.com/apezok/3/edit

このフィドルでは、ダイアログを開くことができるボタンを作成しました。clickoutsideダイアログにもイベントをバインドします。今私の問題は、ボタンをクリックしてダイアログを開き、イベントの外側をクリックしてダイアログを閉じたときです。ダイアログを開くときにこのイベントの実行を停止するにはどうすればよいですか?

4

1 に答える 1

2

ボタン要素をクリックすると、まずその要素のクリック イベントがトリガーされ、次にクリック イベントが DOM の上位レベルに伝播されます。event.stopPropagation()イベントがより高いレベルに伝播されるのを防ぎます。

$("#opendialog").click(function(event){
  event.stopPropagation();
  $(".dialog").dialog("open");
});

ダイアログが既に開いているときにユーザーが開くボタンをクリックするとどうなりますか? これは、ダイアログの外側をクリックしたものとしてカウントされ、閉じられるべきですか? それが望ましい動作である場合、次のように動作します。

$("#opendialog").click(function(event){
  if (!$(".dialog").dialog("isOpen")) {
    event.stopPropagation();
    $(".dialog").dialog("open");
  }
});
于 2012-11-11T05:17:11.020 に答える