target
可能是使用事件属性的最佳方式。默认情况下,这会返回一个非 jQuery 对象,这并不是特别有用,但是将其包装起来可以$()
解决这个问题:
$(function() {
$(document).bind('click', function(event) {
var element = $(event.target);
alert(element.height()); // Get height
alert(element.attr('id')); // Get ID attribute
// ...
});
});
如果你想修复你当前的方法,在你的处理程序中,你可以使用, 和朋友click()
访问该元素的属性:.attr()
$(function() {
$('*').bind('click', function(event) {
alert($(this).height()); // Get height
alert($(this).attr('id')); // Get ID attribute
// ...
});
});
$(this)
在函数范围内引用被单击的元素。在 jQuery 文档中有一个函数列表,它们将在此处和此处返回属性。$.attr('id')
将返回元素的 ID 以及其他内容,$.data()
并将返回data-*
属性。
要获取父元素的属性,只需使用$(this).parent()
. 例如,要获取包含单击元素的表单的 ID,请使用$(this).closest('form').attr('id');
. 一切都是相对于被点击的元素($(this)
),所以你可以只使用DOM 遍历函数。
但是,使用$('*').bind()
效率非常低;您正在将事件处理程序绑定到页面上的每个元素,而实际上您应该使用.on()
(jQuery 1.7+)委托事件:
$(function() {
$('body').on('click', '*', function(event) {
alert($(this).height()); // Get height
alert($(this).attr('id')); // Get ID attribute
// ...
});
});
这种方法只将一个事件绑定到页面上的每个元素,<body>
而不是一个事件。