jQuery Live()不起作用

jQuery Live() doesn't work

本文关键字:不起作用 Live jQuery      更新时间:2023-09-26

嗨,由于某些原因,我的live()函数不工作。我想添加一个新的li元素与点击功能通过点击在ulAllApps中的li元素。在ulMyApps内部创建一个新的li元素,但是没有click功能。

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点击功能,你正试图删除tmp.close ('li')。现在看看文档,我认为最接近的是向上移动DOM寻找最近的下一个('li'),而不是它所在的那个。您确定不需要使用tmp.remove()吗?

也许看看是否在点击时首先抛出一个警报,看看它是否正在触发,因为你不做任何错误。这里可能发生了一些你没有意识到的事情。另一个选项是将LIVE更改为委托,并将其附加到ul,看看是否会触发

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