jquery $(this).id 返回未定义

Posted

技术标签:

【中文标题】jquery $(this).id 返回未定义【英文标题】:jquery $(this).id return Undefined 【发布时间】:2012-05-21 15:44:54 【问题描述】:

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

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

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

EDIT:

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

这两行返回null!

【问题讨论】:

始终使用 console.log();这会容易得多。在您的示例中,您可以使用:console.log(this);它显示所有数据(id、className 等...) 【参考方案1】:

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

    直接访问元素上的属性:

    this.id

    从 jQuery 对象访问它:

    $(this).attr("id")

    从jQuery中拉出对象:

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

    event 对象中获取id

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

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

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

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

【讨论】:

显然这是一个足够受欢迎的问题,当我在 google 上搜索“$(this).id in jquery”时,这是排名第一的搜索结果。你的回答是正确的,帮助了我。我使用了 .attr() 方法,它就像一个魅力。谢谢! @Pier 确实这是最好的答案,但不是唯一正确的答案。 @yeyo 但这是更有用、更优雅、更完整的答案。它甚至包括“正确”答案中列出的答案作为其选项#4。 OP 应将此设置为正确答案。【参考方案2】:

另一种选择(就如你所见):

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

【讨论】:

【参考方案3】:

演示 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"));
    );
);​

【讨论】:

【参考方案4】:

$(this) 是一个包裹 DOM 元素 this 的 jQuery 对象,而 jQuery 对象没有 id 属性。您可能只想通过this.id 获取被点击元素的id 属性。

【讨论】:

【参考方案5】:

使用这个动作

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

alert (a);
);

【讨论】:

【参考方案6】:

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

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

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

    );
);

【讨论】:

【参考方案7】:

试试:

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

【讨论】:

【参考方案8】:

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

$(".fichier").bind('click', function()      
     alert($(this).attr('id'));
);

【讨论】:

以上是关于jquery $(this).id 返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 4 中的 JQuery 未定义和 $ 未定义错误 [关闭]

$(a,this).attr('href') 返回未定义

jQuery选择返回未定义

Internet Explorer 7 从 jQuery 类选择器返回“未定义”

发布请求在服务器端返回未定义

试图用 jest 测试我的巢 api,返回未定义