2010-02-28 65 views
3

我有兩個DIV元素。 HTML看起來像這樣:jquery觸發器問題

<div id="first"><div id="second"></div></div> 

此elemets的CSS是:

#first{ float:left; width:656px; border-bottom:1px solid #CCC; padding-top:5px; display:block; cursor:pointer;} 
#second{ float: right; margin-right:10px; border:1px solid #9F0; width:230px; height:14px; background-color:#FF0; display: none;} 

jQuery代碼:

$(document).ready(function(){ 
    $("#first").click(function(event) { 
     $("#third").load('index.php'); 
    }); 
}); 

$("#first").live('mouseover', function() {  
    $("div#second").show(); 
}); 

$("#second").live('click', function() {  
    $("#fourth").load('somepage.php'); 
}); 

,我想要做的事情是當第一次鼠標懸停DIV觸發功能,第二個DIV顯示在第一個DIV內,用戶可以點擊第二個DIV並打開「somepage.php」。使用此代碼,第二個DIV的Jquery函數由第一個DIV的CSS顯示塊覆蓋,並且兩個Jquery都被觸發。

當第二個DIV函數被觸發時,如何暫停第一個DIV的Jquery點擊函數?

+1

你爲什麼使用'live()'? '#second'是否被動態加載?使用'live()'在停止click事件從'#second'到'#first'的傳播時提出了獨特的挑戰。 – user113716 2010-02-28 00:50:26

回答

2

如果你不居住使用(即使用點擊/綁定代替)第二單擊處理程序,那麼你可以直接從處理程序返回false或調用event.stopPropagation()。

另一個解決方案是檢查event.target.id上的第一個div單擊處理程序,以查看單擊的內容。