1
我們偶然發現了兩個jQuery版本之間的不兼容性,這些版本正在破壞我們的應用程序之一。從1.7更新到最新的2.1版本時出現問題,但縮小到1.8.0和1.8.1之間的差異。jQuery 1.8.0到1.8.1與.on()選擇器不兼容
我建了一個小提琴here (1.8.0, working)和here (1.8.1, broken)。
HTML
<div class="outer">
<div class="eventcontext">
<a href="#targetNope" class="hasevent">Click me!</a>
</div>
</div>
JS
$('.eventcontext').on('click', '.outer a.hasevent', function(e) {
e.preventDefault();
e.stopPropagation();
$('#targetYep').show();
});
在1.8.0使用匹配所需的元素,與所述選擇器爲「上方」的事件上下文作品的一部分沒有任何問題的選擇器,就像原生querySelector
一樣,而在1.8.1中則沒有。
這是一個有意的改變,還是我們可以預料到在某些時候這是「固定的」?我想知道這是否可能是一個錯誤,因爲它發生在修補程序版本更新中,會破壞東西(至少在我們的情況下),但在最新版本中仍然是相同的。
性能原因很有道理!我仍然會看看jQuery源碼,看看究竟發生了什麼。如前所述,'querySelector'確實在這種情況下工作,所以如果他們在底層使用Sizzle將不得不做額外的工作來獲得這種行爲。感謝您的回答,並在變更日誌中指出該行!我一定錯過了。 – MildlySerious