我知道live
在版本1.7中被棄用,在1.9中被刪除,並且不再推薦它。但仍然,因爲我正在準備面試機測試,因此我試圖區分live
和on
。 Document說JQuery.live()無法正常工作
調用event.stopPropagation()在事件處理程序處於停止的事件處理程序的安裝文件 在下部無效;該事件已經傳播到文件。
因此我試過這個。 標記:
<div>
<h1>
<a href="#">
<span>Hello</span>
</a>
</h1>
</div>
腳本:
$(document).ready(function() {
$('span').live("click",function() {
alert('span');
});
$('a').click(function() {
alert('span a');
});
$('h1').click(function() {
alert('span a h1');
event.stopPropagation();
});
$('div').click(function() {
alert('span a h1 div');
});
});
我使用jQuery 1.7版本,其中兩個live
和on
存在。
發生了什麼:
- 跨度
live
是沒有得到調用,而是直接調用的a
click
。 - 如果我刪除除
live
之外的所有其他事件,則它將被調用。 - 作爲醫生說,這是在做完全相反的,即它停止事件冒泡,如果我用
live
連接event.stopPropagation();
'調用事件。事件 中的stopPropagation()處理程序在停止文檔中較低的事件處理程序時效果不佳;'jsfiddle中的行爲是正確的。它會阻止事件冒泡文檔,但是在停止附加到子dom的事件方面效率低下,這就是爲什麼h1和a上的事件已經觸發了 – mohamedrias 2015-04-01 05:54:16