47

我在页面上有两个 asp 单选按钮,它们位于updatepanel. 我用 jQuery 为他们写了一个点击事件,如下所示:

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

但它返回未定义。问题是什么?

EDIT:

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

这两行返回null

4

8 回答 8

126

$(this)并且this不一样。第一个代表一个包裹在您的元素周围的 jQuery 对象。第二个只是你的元素。该id属性存在于元素上,但不存在于 jQuery 对象上。因此,您有几个选择:

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

    this.id

  2. 从 jQuery 对象访问它:

    $(this).attr("id")

  3. 从 jQuery 中拉出对象:

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

  4. idevent对象获取:

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

    使用target,您可以获得id引发事件的元素的 。currentTarget只会告诉您事件当前正在冒泡的元素。这些并不总是相同的。

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

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

于 2012-05-14T06:51:50.663 回答
45

另一种选择(只是你已经看到了):

$(function () {
    $(".inputs").click(function (e) {
         alert(e.target.id);
    });
});
于 2012-05-14T06:53:57.700 回答
9

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

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

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

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

祝你好运,加油!

代码

$(document).ready(function () {
    $(".inputs").click(function () {
        alert(this.id);
        
        alert(" or " + $(this).attr("id"));
    });
});​
于 2012-05-14T06:50:11.367 回答
4

$(this)是一个包装 DOM 元素的 jQuery 对象,this而 jQuery 对象没有id属性。您可能只想this.id获取idclicked 元素的属性。

于 2012-05-14T06:48:55.313 回答
3

使用这个动作

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

alert (a);
});
于 2013-12-23T01:42:04.840 回答
1

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

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

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

    });
});
于 2012-05-14T06:50:29.590 回答
0

尝试:

$(document).ready(() => {
    $(".inputs").click((e) => {
         alert($(e.target).attr('id'))
    })
})    
于 2021-06-21T14:21:15.687 回答
0

您可以使用.attr('id')来获取id元素的。

$(".fichier").bind('click', function(){      
     alert($(this).attr('id'));
});
于 2021-10-15T11:05:17.153 回答