2

それ自体がクリック可能なdiv内に編集可能な要素があります。x-editable アンカー要素をクリックするたびに、クリックによって DOM がバブルアップし、親 div のクリックがトリガーされます。どうすればそれを防ぐことができますか? jQuery でこれを停止できることはわかっていstopPropagation()ますが、このメソッドをどこで呼び出すのでしょうか?

問題のある JSFiddle は次のとおりです: http://jsfiddle.net/4RZvV/。編集可能な値のクリックを複製するには、含まれている div がクリック イベントをキャッチすることがわかります。これは、x-editable ポップアップの任意の場所をクリックしたときにも発生し、それも防止したいと考えています。

lightswitch05 の回答後に編集

選択可能な複数の動的 DIV があるため、グローバル変数を使用できませんでした。.editable-click代わりに変更されるアンカーに属性を追加しました。

editable-activeポップアップが開いているかどうかを知るために使用されます

editable-activateable代わりに、その.editable-clickアンカーをそのまま扱う必要があるかどうかを知るために使用されます

$(document).on('shown', "a.editable-click[editable-activateable]", function(e, reason) {
  return $(this).attr("editable-active", true);
});

$(document).on('hidden', "a.editable-click[editable-activateable]", function(e, reason) {
  return $(this).removeAttr("editable-active");
});

チェックはあなたが説明したのとほとんど同じです

$(document).on("click", ".version", function() {
  $this = $(this)

  // Check that the xeditable popup is not open
  if($this.find("a[editable-active]").length === 0) { // means that editable popup is not open so we can do the stuff
    // ... do stuff ...
  }
})
4

2 に答える 2

1

きれいではありませんが、次のような方法でこの問題を解決しました。

$('.some-class').click(function(event) {
  if(event.target.tagName === "A" || event.target.tagName === "INPUT" || event.target.tagName === "BUTTON"){
    return;
  }

クリックしても問題ない tagNames の特定のリストを必要としないソリューションをまだ探しています。

于 2013-10-08T18:02:22.790 に答える