我想綁定到一個元素並在它上面添加一個大綱。問題是,當我將鼠標懸停在嵌套元素上時,父元素也被選中。帶通配符選擇器/事件冒泡的嵌套元素
當我將鼠標懸停在「5深度」上時,我應該只在該跨度上有一個邊框,而不是所有的父母。
我怎樣才能避免這種情況?一種奇怪的用例,但我沒有控制這裏的標記:)
我想綁定到一個元素並在它上面添加一個大綱。問題是,當我將鼠標懸停在嵌套元素上時,父元素也被選中。帶通配符選擇器/事件冒泡的嵌套元素
當我將鼠標懸停在「5深度」上時,我應該只在該跨度上有一個邊框,而不是所有的父母。
我怎樣才能避免這種情況?一種奇怪的用例,但我沒有控制這裏的標記:)
這是因爲event
冒泡,直到body
元素。使用event.stopPropagation()
停止事件傳播,那麼它只會限制觸發事件的元素。
工作demo
<span id="1">
one deep
<span id="2">
two deep
<span id="3">
Three deep
<span id="4">
Four Deep
<span id="5">
five deep
</span>
</span>
</span>
$('#5').hover(function() {
$(this).css('outline', '2px solid red');
},
function() {
$(this).css('outline', 'none')
});
我不能讓這與hover
工作。如果你從左到右混淆,反之亦然,它的行爲並不像我想要的那樣。相反,我做了這似乎很好的工作。
$('body *').mouseover(function(e) {
$(this).css('outline', '2px solid red');
e.stopPropagation();
});
$('body *').mouseout(function(e) {
$('span').css('outline', 'none');
});
您的演示不起作用? 'e'沒有定義 – mrtsherman
它工作正常。再看看http://jsfiddle.net/7uQwr/3/ – ShankarSangoli
在回調處理程序中,確保你已經通過'e'。 – ShankarSangoli