0
我遇到了一些我沒想到的行爲。我不確定這是否是jQuery中的錯誤,或者它只是以這種方式工作。
jquery事件與命名空間不符合預期的文檔
我們的應用程序產生相當我們想要的jQuery當我們使用上document
觸發器觸發他們叫了幾個事件處理程序(我認爲那些被稱爲「全球性事件」?)。爲了更好地控制發生的事情,我們向它們添加了命名空間。
$(document).on('evName.someThing', function(ev) {
output.append('<br />' + ++counter + ' triggered! ' + new Date().getSeconds());
})
output.on('evName2.funkyNameSpace', function() {
output.append('<br />' + ++counter + ' funky click!');
})
似乎對document
觸發事件的行爲不同,那麼一個特定的元素上觸發事件:特定元素上
- 事件與命名空間的行爲如我們預期:適當的處理程序被調用時有事件類型和命名空間之間的精確匹配:
例如:
output.trigger('evName2'); // triggers (expected)
output.trigger('evName2.aaaaaNamespace'); // does not trigger (expected)
output.trigger('evName2.funkyNameSpace'); // triggers (expected)
- 但對於全局事件,似乎添加名稱空間並不允許我們限制哪些處理程序被調用。就好像你添加的是什麼名字空間並不重要,漢德斯總是被調用。只需要有一個匹配的事件類型。
例如:
$.event.trigger('evName.someThingElse'); // triggers (hmmm?)
$.event.trigger('evName.someThinggg'); // triggers (hmmm?)
$.event.trigger('evName.foo'); // triggers (hmmm?)
$.event.trigger('evName'); // triggers (expected)
$.event.trigger('evNameeeeee'); // does not trigger (expected)
這是預期的行爲?還是一個錯誤?