我在具有的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. C#事件冒泡
- 3. Onclick事件冒泡
- 4. Winforms冒泡事件
- 5. 事件不冒泡
- 6. JavaScript事件冒泡
- 7. 的Javascript事件不冒泡
- 8. C#冒泡/传递事件
- 9. 工具箱冒泡事件
- 10. 事件在jQuery冒泡
- 11. 停止href事件冒泡
- 12. Android ListView和事件冒泡
- 13. 冒泡事件订阅
- 14. 关闭事件冒泡
- 15. jquery点击事件冒泡
- 16. MouseDoubleClick事件不会冒泡
- 17. jQuery的事件冒泡
- 18. JavaScript高级事件冒泡
- 19. JS事件冒泡DOM
- 20. jquery datepicker冒泡的事件
- 21. Raphael.JS,防止事件冒泡
- 22. 事件冒泡JQuery FullCalendar + Backbone
- 23. jQuery和事件冒泡... AGAIN
- 24. 事件冒泡奇怪
- 25. Jquery冒泡点击事件
- 26. 掌握事件冒泡
- 27. 事件冒泡事件代表团
- 28. LongListSelector - 点击事件冒泡SelectionChanged事件
- 29. 事件捕获,事件冒泡和jQuery.on()
- 30. 事件捕获vs事件冒泡
但是,当鼠标悬停/离开td而不离开表本身时,事件是否会继续被触发? – 2011-02-03 20:15:21