3

我正在尝试从我的 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>

jQuery:

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

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

现场演示

4

7 回答 7

2

尝试这样的事情,

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

        })
于 2013-11-13T05:57:34.803 回答
1

它应该$("div.label:eq(0)");代替$("div.label")[0];

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

在这里更新了小提琴。

于 2013-11-13T05:55:52.987 回答
1
var x =  $("div.label:eq(0)");
console.log (x.attr("aria-label"));
于 2013-11-13T05:56:16.587 回答
1
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

看演示

于 2013-11-13T05:59:45.460 回答
1

如果您有多个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"));
于 2013-11-13T06:01:18.047 回答
1

默认情况下,如果用作 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方法。

于 2013-11-13T06:04:05.297 回答
0

试试这个

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

小提琴

于 2013-11-13T05:55:58.530 回答