JQuery最近属性返回undefined

dns*_*sko 1 javascript jquery

我一直在看其他一些例子,但不幸的是它们并不完全相同.我试图删除一些数据onclick(在这里省略该部分,只需要id).问题是它为我想要的id返回undefined.

 function deleteMessage(){
    var $currentId = $(this).closest(".ulrecords").attr('id');
    alert("ID: " + $currentId)
 }
Run Code Online (Sandbox Code Playgroud)

该方法被称为如下

<a href="javascript:deleteMessage();" id="amessage">
Run Code Online (Sandbox Code Playgroud)

HTML看起来像这样

<ul class="chat-messages">
  <ul id="msg_1234567890_a1bs2e" class="ulrecords">
   <li>
     John
     <span>27 minutes ago</span>
      <a href="javascript:deleteMessage();" id="amessage"> X</a>
    </li>
    <li id="limessage">
       Some message here
    </li>
  </ul>
  <ul id="msg_9234742878_73bhad" class="ulrecords">
   <li>
     John
     <span>28 minutes ago</span>
      <a href="javascript:deleteMessage();" id="amessage"> X</a>
    </li>
    <li id="limessage">
       Some other message here
    </li>
  </ul>
</ul>
Run Code Online (Sandbox Code Playgroud)

因此,当我点击其中一个ul时,我想获得希望,任何人都可以指出我正确的方向

epa*_*llo 5

因为this在你的情况下是窗口.

传入对您单击的元素的引用

<a href="javascript:deleteMessage(this);" id="amessage">
Run Code Online (Sandbox Code Playgroud)

function deleteMessage(elem){
    var $currentId = $(elem).closest(".ulrecords").attr('id');
    alert("ID: " + $currentId)
}
Run Code Online (Sandbox Code Playgroud)

或者更好的是,使用eventListeners附加事件.

$(document).on("click", ".ulrecords", function () {
    alert(this.id);
});
Run Code Online (Sandbox Code Playgroud)

要么

$(document).on("click", ".ulrecords a", function () {
    var $currentId = $(this).closest(".ulrecords").attr('id');
});
Run Code Online (Sandbox Code Playgroud)

ids也是单数.