我的 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()
委托的功能,因此当元素被禁用时,事件似乎不会冒泡,无论事件是如何触发的(即既不是通过.trigger
也不.triggerHandler
是通过用户交互)。但是,我不明白为什么,因为处理程序都没有返回任何内容或进行任何调用以防止事件传播,并且 jQuery 文档没有提到“禁用”属性对传播有任何影响。我在这里想念什么?