jquery $(this).id return Undefined

我在页面上有两个asp单选按钮放在updatepanel 。 我用jQuery为他们写了一个click事件,如下所示:

 $(document).ready(function () { $(".inputs").click(function () { alert($(this).id); }); }); 

但它返回Undefined。 问题是什么?

 EDIT: alert(" or " + $(this).attr("id")); alert(this.id); 

这两行返回null

另一个选择(就是你见过它):

 $(function () { $(".inputs").click(function (e) { alert(e.target.id); }); }); 

HTH。

$(this)this不一样。 第一个表示围绕元素的jQuery对象。 第二个是你的元素。 id属性存在于元素上,但不存在于jQuery对象中。 因此,您有几个选择:

  1. 直接访问元素上的属性:

    this.id

  2. 从jQuery对象访问它:

    $(this).attr("id")

  3. 从jQuery中拉出对象:

    $(this).get(0).id; // Or $(this)[0].id

  4. event对象中获取id

    当引发事件时,例如点击事件,它们会携带重要的信息和参考资料。 在上面的代码中,您有一个点击事件。 此事件对象具有两个项目的引用: currentTargettarget

    使用target ,您可以获取引发事件的元素的idcurrentTarget只会告诉你当前事件正在冒泡的元素。 这些并不总是一样的。

    $("#button").on("click", function(e){ console.log( e.target.id ) });

在所有这些中,最好的选择是直接从this自己访问它,除非你参与了一系列嵌套事件,那么最好使用每个嵌套事件的event对象(给它们所有唯一的名称) )引用更高或更低范围的元素。

Hiya 演示 http://jsfiddle.net/LYTbc/

这是对DOM元素的引用,因此您可以直接将其包装起来。

attr api: http : //api.jquery.com/attr/

.attr()方法仅获取匹配集中第一个元素的属性值。

有一个很好的,干杯!

 $(document).ready(function () { $(".inputs").click(function () { alert(this.id); alert(" or " + $(this).attr("id")); }); 

});

$(this)是一个jQuery对象,它包含DOM元素,而jQuery对象没有id属性。 您可能只需要this.id来获取被点击元素的id属性。

使用这个活动

 $(document).ready(function () { var a = this.id; alert (a); }); 

这个:是DOM元素$(这个):Jquery objct,用Dom Element包装,你也可以查看这个答案这个vs $(this)

试试这个Attr() 。 获取匹配元素集中第一个元素的属性值。

 $(document).ready(function () { $(".inputs").click(function () { alert(" or " + $(this).attr("id")); }); });