2012-01-20 63 views
1

我試圖從<ul>中將<li>設爲目標,並給它們一個懸停事件。jQuery - .hover()在子元素上觸發

不幸的是,<li> s包含一些其他<div> s,它們位於<li>本身之外。

問題發生在.hover()事件發生時,我將鼠標懸停在兒童<div>上,因爲它們是DOMwise,它們是兒童,儘管設計/幾何圖形看起來完全像是一個不同的元素。

當光標移過0​​本身和它的子元素NONE時,是否有任何方式或任何其他事件可用?

在此先感謝。

回答

2

這是爲了改變風格嗎? 如果是的話請嘗試使用CSS僞事件,而不是jQuery的,如:

li:hover 
{ 
    background-color:yellow; 
} 

另外,使用e.stopPropagation(),例如:

$(document).ready(function(){ 
    $(".parent").click(function(){ 
     // do whatever; 
    }); 
    $(".child").click(function(e) { 
     e.stopPropagation(); 
    }); 
}); 

不幸的是,我不認爲這個工程有懸停,但它使用mouseover和mouseout,這是懸停基本上使用。

+0

第二個人是一個年曆。謝謝! – magtak

1

可以使用event.target屬性來確定事件的發起者來實現:

$('li').hover(function (event) { 
    if ($(this).is(event.target)) { 
    // Your code here 
    } 
}); 

AFAIK沒有對這個沒什麼標準,因爲DOM元素不必有任何大小和冒泡行爲通常是可取的

+0

你不必爲每件事情都使用jquery。 if(this === event.target) 也是有效的。 – Tommyka

相關問題