我的HTML(非動態)看起來是這樣的:的jQuery 1.7。對()事件代表團不選擇禁用的元素上工作
<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()
d的功能因此當一個元素被禁用時,事件不會冒泡,而不管事件是如何被觸發的。既不由.trigger
也不由.triggerHandler
也不由用戶交互)。然而,我不明白爲什麼,因爲處理程序都不返回任何內容或進行任何調用來阻止事件傳播,並且jQuery文檔沒有提及對傳播有任何影響的「禁用」屬性。我在這裏錯過了什麼?
您可能會在第一個處理程序中收到異常。請向我們展示完整的代碼。 – SLaks 2012-04-11 01:49:28
......你不就這麼問嗎? – Ryan 2012-04-11 01:51:04
它會出現'$(「#domain」)。attr(「disabled」,「disabled」);'在「特定」處理程序中是問題的根源。事件是否因「禁用」元素而冒泡? – kobachi 2012-04-11 01:54:31