jquery $(this).id return Undefined

时间:2012-05-14 06:47:22

标签: jquery asp.net

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

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

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

EDIT:

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

这两行返回null

7 个答案:

答案 0 :(得分:99)

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

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

    this.id

  2. 从jQuery对象访问它:

    $(this).attr("id")

  3. 将对象拉出jQuery:

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

  4. id对象获取event

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

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

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

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

答案 1 :(得分:32)

另一种选择(就是你已经看过它):

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

HTH。

答案 2 :(得分:6)

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"));

    });

});

答案 3 :(得分:4)

$(this)是一个包装DOM元素this的jQuery对象,jQuery对象没有id属性。您可能只希望this.id获取所点击元素的id属性。

答案 4 :(得分:3)

使用此活动

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

alert (a);
});

答案 5 :(得分:1)

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

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

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

    });
});

答案 6 :(得分:0)

试试:

$(document).ready(() => {
    $(".inputs").click((e) => {
         alert($(e.target).attr('id'))
    })
})