2013-03-06 115 views
5

我的頁面上有一個「幫助」區域,每當用戶將鼠標懸停在表格上時,幫助信息都應該更新。問題出在表格中,我在每行的1個單元格中有一個複選框,當用戶將鼠標懸停在該複選框上時,我希望複選框的mouseover事件覆蓋表事件並顯示覆選框幫助。目前,表格鼠標懸停工作正常,但是當我將鼠標懸停在複選框上時沒有任何反應。如果父元素也有鼠標懸停,如何爲子元素設置鼠標懸停事件?

<table class="myTable"> 
    <tr> 
     <th>Col1</th> 
     <th>Col2</th> 
    </tr> 
    <tr> 
     <td><input class="myCheckbox" type="checkbox" /></td> 
     <td>Cell 2</td> 
    </tr> 
    <tr> 
     <td><input class="myCheckbox" type="checkbox" /></td> 
     <td>Cell 3</td> 
    </tr> 
</table> 

<div class="myHelpMenu"></div> 


$('.myCheckbox').mouseover(function() { 
    $('.myHelpMenu').html("this is my checkbox help"); 
}); 

$('.myTable').mouseover(function() { 
    $('.myHelpMenu').html("this is my tables help"); 
}); 

回答

4

LIVE DEMO

這是使用mouseover是徘徊在當前target元,比用純JS來檢索,檢測一個很好的方式.tagName您可以創建一個消息列表對象並檢索所需的一個。

$('.myTable').mouseover(function(e) { 

    var tag = e.target.tagName; 

    var messages = { 
    "INPUT" : "this is my checkbox help", 
    "TABLE" : "this is my tables help" 
    }; 

    $('.myHelpMenu').text(messages[tag]); 

}); 

如果你想清楚你的信息的消息不喜歡:

$('.myTable').on('mouseover mouseleave',function(e) { 

    var tag = e.target.tagName; 

    var messages = { 
    "INPUT" : "this is my checkbox help", 
    "TABLE" : "this is my tables help" 
    }; 

    $('.myHelpMenu').text(messages[tag]); 

    if(e.type=='mouseleave') 
    $('.myHelpMenu').empty(); 

}); 
+1

+1編碼風格 – Popnoodles 2013-03-07 00:03:14

+1

+1爲甜蜜的「現場演示」按鈕。 – Mercurybullet 2013-03-07 00:08:10

+0

@Mercurybullet :)謝謝哈哈哈,但如果只是按鈕「甜蜜」,你可以刪除+1 :)(P.S你可以自由使用和濫用:D) – 2013-03-07 00:09:36

0

由於mouseover該表是整個區域,只需撥打mouseenter代替。然後,您可以在離開表格後添加mouseout以重新更新。

+0

但面臨的挑戰是輸入複選框是表內,所以我怎麼會觸發該表的鼠標移開? – silvster27 2013-03-06 23:57:04

+0

很多方法,但Mercurybullet在這裏有最好的解決方案。的確很不錯。 – Benjiman 2013-03-07 00:01:52

3

聽起來就像你希望鼠標懸停的複選框停止傳播到表?

如果是這樣,這應該做到這一點。

$('.myCheckbox').mouseover(function(e) { 
    $('.myHelpMenu').html("this is my checkbox help"); 
    e.stopPropagation(); 
}); 
+0

這很好用! – silvster27 2013-03-06 23:58:36

+0

很高興我能幫到你。不要忘記標記答案,如果它有助於解決你的問題。 :) – Mercurybullet 2013-03-07 00:07:20

相關問題