我试图使用jQuery attr('id')从li元素中获取id,但它返回undefined,即使它确实返回了attr('href')的正确值。我很难过。这是我的Codepen a link
<ul id="sortList">
<li id="one"><a href='#'>Ratings</a></li>
<li id="2"><a href=#>Reviews</a></li>
<li id="3"><a href=#>Type</a></li>
</ul>
<h2 id="anchorInfo">hello</h2>
<h2 id="clickInfo">hello</h2>
$('#sortList li').click( function(event){
event.preventDefault();
let whatHref = $(event.target).attr('href');
let whatId = $(event.target).attr('id');
document.getElementById('anchorInfo').innerHTML = whatHref;
document.getElementById('clickInfo').innerHTML = whatId;
})
答案 0 :(得分:1)
而不是
$(event.target).attr('id');
试
$(this).attr('id');
答案 1 :(得分:1)
event.target
是链接,没有id
。你需要从父母那里得到它:
$(event.target).parent().attr('id')
答案 2 :(得分:0)
首先,您需要使用jQuery .each()函数来定位每个元素。然后,您可以使用“this”选择器定位单击的元素。最后,为了定位锚,你需要使用jQuery .find()函数找到被点击的li的子元素。你应该好好去找朋友! Codepen
审核并测试了jQuery代码:
$('#sortList li').each(function(){
$(this).click( function(event){
event.preventDefault();
let whatHref = $(this).find('a').attr('href');
let whatId = $(this).attr('id');
document.getElementById('anchorInfo').innerHTML = whatHref;
document.getElementById('clickInfo').innerHTML = whatId;
});
});
答案 3 :(得分:0)
您应该使用jQuery每个函数。然后,不要使用 this 引用,而应使用 item 作为参数,通过该参数,您可以将其视为 HTMLLIElement 。
答案 4 :(得分:-1)
要使用Pipe_last
,您需要传递.attr
data-attribute
。尝试使用data-id="something"
.prop()