首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JQuery最近的属性返回未定义的

JQuery最近的属性返回未定义的
EN

Stack Overflow用户
提问于 2016-03-14 12:17:47
回答 4查看 655关注 0票数 1

我一直在看其他一些例子,但不幸的是,它们并不完全相同。我正在尝试删除一些数据点击(这里省略了这部分,只需要id )。问题是它返回我想要的id的未定义的。

代码语言:javascript
代码运行次数:0
运行
复制
 function deleteMessage(){
    var $currentId = $(this).closest(".ulrecords").attr('id');
    alert("ID: " + $currentId)
 }

调用该方法的步骤如下

代码语言:javascript
代码运行次数:0
运行
复制
<a href="javascript:deleteMessage();" id="amessage">

HTML看起来如下所示

代码语言:javascript
代码运行次数:0
运行
复制
<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>

所以当我点击其中一个ul的时候,我想得到希望,任何人都可以给我指明正确的方向

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-14 12:21:40

因为在您的情况下,this是窗口。

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

代码语言:javascript
代码运行次数:0
运行
复制
<a href="javascript:deleteMessage(this);" id="amessage">

代码语言:javascript
代码运行次数:0
运行
复制
function deleteMessage(elem){
    var $currentId = $(elem).closest(".ulrecords").attr('id');
    alert("ID: " + $currentId)
}

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

代码语言:javascript
代码运行次数:0
运行
复制
$(document).on("click", ".ulrecords", function () {
    alert(this.id);
});

代码语言:javascript
代码运行次数:0
运行
复制
$(document).on("click", ".ulrecords a", function () {
    var $currentId = $(this).closest(".ulrecords").attr('id');
});

ids也是单数的。

票数 5
EN

Stack Overflow用户

发布于 2016-03-14 12:26:34

您正在通过href链接调用该方法,该链接不设置要单击的元素的执行上下文。为了获得正确的元素,不要通过href调用该方法,而是向其附加一个单击处理程序。现在,您的锚有重复的ID,这是一个完全不同的问题,您需要修复。

我正在向示例中的所有锚添加一个类,以便使用jQuery轻松地选择它们。

代码语言:javascript
代码运行次数:0
运行
复制
<a href="javascript:deleteMessage();" class="my-button">X</a>

和JavaScript:

代码语言:javascript
代码运行次数:0
运行
复制
$(function () {
    $(document).on("click", ".my-button", function () {
        var $currentId = $(this).closest(".ulrecords").attr('id');
        alert("ID: " + $currentId);
    });
});
票数 0
EN

Stack Overflow用户

发布于 2016-03-14 12:28:41

代码语言:javascript
代码运行次数:0
运行
复制
$(document).ready(function() {
  $('.delmsg').click(function() {
   alert($(this).parent().parent('ul').attr('id'));
  });
});
代码语言:javascript
代码运行次数:0
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="chat-messages">
  <ul id="msg_1234567890_a1bs2e" class="ulrecords">
   <li>John <span>27 minutes ago</span> <a href="javascript:deleteMessage();" class="delmsg">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();" class="delmsg">X</a></li>
   <li id="limessage">Some other message here</li>
  </ul>
</ul>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35987351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档