繁体   English   中英

jQuery Live()不起作用

[英]jQuery Live() doesn't work

您好,由于某些原因,我的live()函数无法正常工作。 我想通过单击ulAllApps内部的li元素来添加具有单击功能的喵喵li元素。 在ulMyApps内部创建了一个新的li元素,但没有单击功能。

HTML:

<div class="MyApps" >
  <ul class="ulMyApps">   
       <li class="MYLinkTR">app1</li>
   </ul>     
</div>
<div class="AllApps">
   <ul class="ulAllApps"> 
       <li class="IECLinkTR">app1</li>
       <li class="IECLinkTR">app2</li>
   </ul>
</div>

jQuery代码:

$(document).ready(function () {

$(".IECLinkTR").click(function () { 
    var tmp = $(this).html();
    $.ajax({
        type: "POST",
        url: window.location.href+"/addToMyLinks",
        data: "{'app': '" + tmp  + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
           $(".ulMyApps").append("<li class=\"MYLinkTR\">"+ tmp +"</li>");
        },
        error: function (msg) {
           alert("You have already have that app");                 
        }
    }); 
});

$(".MYLinkTR").live('click', function () {
    var tmp = $(this);
    $.ajax({
        type: "POST",
        url: window.location.href + "/removeFromMyLinks",
        data: "{'app': '" + $(this).html() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            tmp.closest('li').remove();
        },
        error: function (msg) {
        }
    });
});
});

由于某种原因,动态创建的新li元素没有来自Live函数的CLICK功能……

我所看到的是,在您的MYLinkTR click函数上,您试图删除tmp.closest('li')。 现在看一下我认为最接近的文档,它正在DOM上移,以寻找最接近的下一个('li'),而不是其最近的那个。 您确定不想要tmp.remove()吗?

也许是先查看点击是否引发警报,以查看是否触发了警报,因为您没有对错误采取任何措施。 您可能不知道在这里发生了一些事情。 其他选项是将LIVE更改为委托并将其附加到ul,看看是否会触发

 $('ul.MyApps').delegate('li', 'click', function(e){
       alert('does this at least fire');
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM