我在页面上有两个 asp 单选按钮,它们放置在 updatepanel
中。我用 jQuery 为他们编写了一个点击事件,如下所示:
$(document).ready(function () {
$(".inputs").click(function () {
alert($(this).id);
});
});
但它返回未定义。有什么问题吗?
EDIT:
alert(" or " + $(this).attr("id"));
alert(this.id);
这两行返回null
!
最佳答案
$(this)
和 this
不同。第一个表示包裹在元素周围的 jQuery 对象。第二个只是你的元素。 id
属性存在于元素上,但不存在于 jQuery 对象上。因此,您有几个选择:
直接访问元素上的属性:
this.id
从 jQuery 对象访问它:
$(this).attr("id")
从 jQuery 中拉出对象:
$(this).get(0).id;//或者 $(this)[0].id
从
事件
对象获取id
:当引发事件时,例如单击事件,它们会携带重要的信息和引用。在上面的代码中,您有一个点击事件。该事件对象引用了两个项目:
currentTarget
和target
。使用
target
,您可以获取引发事件的元素的id
。 currentTarget 只会告诉您事件当前正在冒泡的元素。这些并不总是相同的。$("#button").on("click", function(e){ console.log( e.target.id ) });
在所有这些中,最好的选择是直接从 this
本身访问它,除非您参与一系列嵌套事件,那么最好使用 每个嵌套事件的 >event
对象(为它们提供唯一的名称)以引用更高或更低范围中的元素。
关于jquery $(this).id 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10578566/