我在具有的onmouseover和onmouseout事件的表一堆<td>
的。我想只有一个事件处理程序,例如<table>
本身,它知道如何处理所有事件以防止页面上有这么多事件处理程序。使用原生javascript,最好的方法是什么?冒泡事件设计
Q
冒泡事件设计
0
A
回答
0
应将事件冒泡到,除非它们在该处理从在层次结构中的元素较低向下取消该表。您可以为表上的mouseover
和mouseout
事件设置事件侦听器,并检查目标是否为<td>
单元。如果是这样,那么处理这些事件。这是一个简单的例子。
var table = document.getElementById("myTable");
table.addEventListener('mouseover', function(event) {
var target = event.target;
if (target.nodeName == 'TD') {
target.style.backgroundColor = '#FFF';
}
});
查看compatibility table了解鼠标事件。由于旧版本的IE不遵循w3c规范中的DOM事件注册模型,因此您必须使用attachEvent
才能为IE附加事件。
阅读了这个article得到更好的理解在IE和其他浏览器的差异。
结帐非跨浏览器example这里。
0
你应该使用非侵入式JavaScript,使你有两个处理程序设置为每个但并不凌乱的页面。使用getElementsByTagName(“td”)获取 - 根据需要修改。然后遍历并为每个元素,tableElem,tableElem.onMouseOver = function(){whatever ...}和tableElem.onMouseOut = function(){whatever ...}。
如果你想使用jQuery,你可以使它变得更加简洁。 $( “TD”)鼠标悬停(函数(){无论;});
0
示例代码:
table.onmouseover = function(event) {
var target = (event && event.target) || window.event.srcElement;
if(target.nodeName.toLowerCase() !== 'td') return;
// do stuff
};
相关问题
- 1. 冒泡事件。
- 2. 事件不冒泡
- 3. Winforms冒泡事件
- 4. JavaScript事件冒泡
- 5. jquery datepicker冒泡的事件
- 6. jQuery的事件冒泡
- 7. 事件冒泡奇怪
- 8. jQuery和事件冒泡... AGAIN
- 9. Jquery冒泡点击事件
- 10. MouseDoubleClick事件不会冒泡
- 11. C#冒泡/传递事件
- 12. 的Javascript事件不冒泡
- 13. jquery点击事件冒泡
- 14. Raphael.JS,防止事件冒泡
- 15. 停止href事件冒泡
- 16. 事件冒泡事件代表团
- 17. 事件冒泡和onblur事件
- 18. 事件捕获vs事件冒泡
- 19. LongListSelector - 点击事件冒泡SelectionChanged事件
- 20. 将Flex 3事件冒泡设置为false ..如何让它冒泡呢?
- 21. 在javascript中单击事件冒泡或失败冒泡
- 22. JavaScript事件冒泡工作不正常
- 23. 使用querySelector冒泡的事件
- 24. 在IE浏览器冒泡事件
- 25. ASP.Net用户控制事件冒泡(C#)
- 26. 如何让PropertyChanged事件冒泡?
- 27. 在AWT事件模型中冒泡?
- 28. jquery中的事件冒泡问题
- 29. 事件冒泡和“这个”古怪
- 30. 在javascript中冒泡的逆向事件
但是,当鼠标悬停/离开td而不离开表本身时,事件是否会继续被触发? – 2011-02-03 20:15:21