为什么jQuery attr为'id'返回undefined而不是'href'?

时间:2017-11-01 21:24:33

标签: jquery undefined attr

我试图使用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;
  })

5 个答案:

答案 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()