2013-03-06 41 views
5

Tôi có một vùng "trợ giúp" trên trang của tôi và bất cứ khi nào người dùng di chuột qua một bảng, thông tin trợ giúp sẽ được cập nhật. Vấn đề nằm trong bảng tôi có một hộp kiểm trong 1 ô của mỗi hàng và khi người dùng di chuột qua hộp kiểm đó, tôi muốn sự kiện di chuột qua hộp kiểm để ghi đè sự kiện bảng và hộp kiểm trợ giúp được hiển thị. Hiện tại, việc di chuyển bảng hoạt động tốt nhưng không có gì xảy ra khi tôi di chuột qua hộp kiểm.Làm cách nào tôi có thể có sự kiện di chuột qua đối với phần tử con nếu phần tử gốc cũng có chuột di chuột?

<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"); 
}); 

Trả lời

4

LIVE DEMO

Đây là một cách tốt đẹp để phát hiện sử dụng mouseover các target yếu tố hiện đang dao động, vì sử dụng tinh khiết JS để lấy .tagName bạn có thể tạo một điệp danh sách đối tượng và lấy cái mong muốn.

$('.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]); 

}); 

Nếu bạn muốn xóa thông điệp thông tin của bạn làm thích:

$('.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 cho kiểu mã hóa – Popnoodles

+1

+1 cho nút "Live Demo" ngọt ngào. – Mercurybullet

+0

@Mercurybullet :) cảm ơn hahaha nhưng nếu nó chỉ dành cho nút "vị ngọt" bạn có thể xóa +1 :) (P.S bạn được tự do sử dụng và lạm dụng: D) –

0

Kể từ khi mouseover cho bảng là dành cho toàn bộ khu vực, chỉ cần gọi mouseenter để thay thế. Sau đó, bạn có thể thêm mouseout để reupdate sau khi họ rời khỏi bảng.

+0

nhưng thách thức là hộp kiểm đầu vào là bên trong bảng, vậy làm thế nào tôi sẽ kích hoạt các mouseout cho bảng? – silvster27

+0

Rất nhiều cách nhưng Mercurybullet có giải pháp tốt nhất ở đây. Rất tốt. – Benjiman

3

Có vẻ như bạn muốn di chuột qua quá trình truyền dừng hộp kiểm đến bảng?

Nếu có, điều này sẽ thực hiện.

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

Công trình này tuyệt vời !! – silvster27

+0

Vui vì tôi có thể giúp. Đừng quên đánh dấu câu trả lời là đã được chấp nhận nếu nó giúp giải quyết câu hỏi của bạn. :) – Mercurybullet

Các vấn đề liên quan