我正在尝试从我的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"));
任何人都请以正确的方式指导我......?
答案 0 :(得分:1)
答案 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)