我有以下代码:
<script type="text/javascript"> $("*").click(function(event){ var x = event.target; if (x.nodeName == "DIV"){ alert(x.attr("class")); } }) </script>
这会抛出一个’未定义的’异常…有没有其他方法可以得到触发“点击”事件的元素的类?先谢谢你!
解决方法
jQuery提供了一些语法糖来帮助您进行检查 –
.is()
允许您根据任何其他有效的选择器验证元素:
var $target = event.target; if ($target.is('div')){ alert($target.attr('class')); }
还有一些进一步的变化要考虑:
> .click(handler)被明确地分配给匹配的元素(在你的情况下的每一个元素).这增加了开销;处理程序也不会应用于在执行处理程序分配之后动态添加的任何元素.而是使用on()
委托处理程序
>重构你的逻辑,所以,不是处理每一次点击并验证它,你可以使它仅适用于div,首先将选择器更改为$(‘div’)
依靠这一点,这是惯例
所有这些更改后,代码变得更小,更易读:
$('div').on('click',function() { alert($(this).attr('class')); });