2010-08-01 163 views
0

我無法阻止愚蠢的事情發生時,懸停在項目的孩子上空的事件。 我只想通過div.item元素觸發事件,而不是div.itemChild。這是驅使我堅果請幫助。停止jquery直播所有的孩子

event.stopPropigation不起作用。也不if(!$(event.source).is('itemChild')),由於某種原因is()一直返回false。

HTML

<div id="items"> 
    <div class="item"> 
     <div class="itemChild"> 
     </div> 
     <div class="itemChild"> 
     </div> 
    </div> 
</div> 

JS

//on hover event for each post 
$('div.item', '#items').live('mouseover mouseout', function(event){ 
    if (event.type == 'mouseover'){ 
     //fire mouseover handler 
    } 
    else{ 
     //fire mouseout handler 
    } 
}); 

有沒有辦法從懸停的div.item的兒童在射擊停止住嗎?

順便說一下,div.item的孩子完全覆蓋它。

基本上我想這樣做.hover(),但綁定到通過ajax加載的東西。

+1

'停止jQuery的現場掛住所有children.' - 這聽起來像兒童保護服務事宜。 – 2010-08-01 23:23:51

+0

哈哈哈,沒有開玩笑。 – 2010-08-03 19:20:42

回答

2

這對孩子沒有約束力。它正在冒泡給父母。

此外,您的語法不正確。這:。

$("div.item", "div.items")... 

時說:「我找所有類項是與類項目的div後代的div但是你有沒有這樣的div(與類項目)你有一個ID一個div項目

結合所有的嘗試:

$("#items div").live("mouseover mouseout", function(event) { 
    if ($(event.source).hasClass("itemChild")) { 
    return false; 
    } else if (event.type == "mouseover") { 
    ... 
    } else { 
    ... 
    } 
}); 

,或者:

基本上,這種貓的皮膚有很多種方法,但就像我在第一句話中說過的那樣,你必須明白,直到處理程序停止傳播時,事件纔會冒泡,直接地(通過調用event.stopPropagation()或從事件處理程序返回false相當於event.stopPropagation(); event.preventDefault();)。

另外,如果你正在做mouseentermouseout你可能也僅僅使用hover()事件,做這兩個的:

$("#items > div.item").live("hover", function(event) { 
    // mouseenter 
}, function(event) { 
    // mouseout 
}); 
+0

那不是很有幫助 – 2010-08-01 06:22:49

+3

@羅伯特哇,downvoting人試圖幫助你。根本沒有任何幫助。 – cletus 2010-08-01 06:23:59

+0

是的,當我投票時,你沒有任何有用的信息。你已經添加了更多,我已經刪除了投票。 謝謝。 – 2010-08-01 06:28:22