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

时间:2013-11-13 05:53:40

标签: javascript jquery

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

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

Live Demo

7 个答案:

答案 0 :(得分:1)

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

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

Updated fiddle here.

答案 1 :(得分:1)

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

答案 2 :(得分:1)

尝试这样的事情,

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

        })

答案 3 :(得分: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

<强> see demo

答案 4 :(得分: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"));

答案 5 :(得分: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方法。

答案 6 :(得分:0)

试试这个

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

Fiddle