无法使用 jquery 方法获取属性值

Unable to get the attribute value using jquery method

本文关键字:获取 属性 方法 jquery      更新时间:2023-09-26

我正在尝试从我的 dom 元素中获取属性值,但我得到的结果为:

Uncaught TypeError: Object #<HTMLDivElement> has no method 'attr' 

我根本无法获得属性值..问题是什么..?

这是我的代码:

.HTML:

<div class="label" aria-label="Logo">
    <div class="trunc-string">
        <div class="start denali-tooltip tooltip-on-truncate"><span>Logo</span></div>
    </div>
</div>

j查询:

var x =  $("div.label")[0];
console.log (x.attr("aria-label"));

请任何人以正确的方式指导我..?

现场演示

尝试这样的事情,

        $(function(){
            // will give you pure javascript(DOM) object,so use getAttribute().
            var x =  $("div.label")[0];
            console.log(x.getAttribute("aria-label"));
            //using jquery
            console.log($(x).attr("aria-label"));
        })

它应该是$("div.label:eq(0)");而不是$("div.label")[0];

var x =  $("div.label:eq(0)");

在这里更新了小提琴。

试试这个

var x =  $("div.label"); //or $("div.label:eq(0)")
console.log (x.attr("aria-label"));

小提琴

var x =  $("div.label:eq(0)");
console.log (x.attr("aria-label"));
var x =  $("div.label")[0];
//^^^^^ by this you get a object with html of .label

console.log ($(x).attr("aria-label"));
//^^^^^^^^^^^^^^then use as a jquery object and apply their method

查看演示

如果你div.label多个元素,并且你想根据它的节点位置获取值,你可以去

var x =  $("div.label:eq(0)");
console.log (x.attr("aria-label"));

否则,如果只有一个div.label元素,则可以使用

var x =  $("div.label");
console.log (x.attr("aria-label"));

默认情况下,如果用作 getter,.attr 将返回第一个选定元素的属性值:

获取匹配元素

集中第一个元素的属性值,或为每个匹配的元素设置一个或多个属性。

所以你真正要做的就是

$("div.label").attr("aria-label");

如果要筛选选择以仅包含第一个元素(因为您想在其他地方使用它),则可以使用 .first

 var x = $("div.label").first();

.eq(0)

 var x = $("div.label").eq(0);

出现错误的原因是$(...)[i]返回该位置的选定 DOM 元素。DOM 元素没有.attr方法。