2

私のHTML(動的ではない)は次のようになります:

<select id="domain" class="marketplace">
  <option>United States</option>
  ...
</select>

これは機能します:

$("#domain").on("change", function() {
  $("#domain").attr("disabled", "disabled");
  /* do ajaxy stuff */
  $("#domain").removeAttr("disabled");
});
$("select.marketplace").on("change", function() { /* do some general stuff */});

これはしません:

$("#domain").on("change", function() {
  $("#domain").attr("disabled", "disabled");
  /* do ajaxy stuff */
  $("#domain").removeAttr("disabled");
});
$(document).on("change", "select.marketplace", function() { /* do some general stuff */});

呼び出しを削除する$("#domain").attr("disabled", "disabled");と、委譲の機能が復元されるため、イベントがどのようにトリガーされたか (つまり、ユーザーの操作によるものでもない)$(document).on()に関係なく、要素が無効になっているときにイベントがバブルしないように見えます。ただし、どちらのハンドラーもイベントの伝播を防ぐために何も返さないか呼び出しを行わず、jQuery のドキュメントには伝播に影響を与える「無効な」属性について言及されていないため、その理由はわかりません。ここで何が欠けていますか?.trigger.triggerHandler

4

2 に答える 2

-1

次のようにイベントの名前空間を試しましたか?

$(document).ready(function() {
  $("#domain").on("change.eventOne", function() { /* do some specific stuff */ });
  $(document).on("change.eventTwo", "select.marketplace", function() { /* do some general stuff */ });
});

本体からの取り付けもお勧めです。私はこれで幸運に恵まれました:

$(document).ready(function() {
  $("#domain").on("change.eventOne", function() { /* do some specific stuff */ });
  $('body').on("change.eventTwo", "select.marketplace", function() { /* do some general stuff */ });
});

これは、明らかに機能しているオンイベントのフィドルです。OPにとって「作業」が実際に何を意味するのか理解していない場合を除きます。

https://jsfiddle.net/szcjszkz/1/

于 2012-04-11T01:55:33.907 に答える