jQuery Live()不起作用

时间:2011-10-09 10:27:45

标签: javascript jquery

嗨,由于某种原因,我的live()函数不起作用。 我想通过单击ulAllApps中的li元素来添加具有点击功能的mew 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功能......

1 个答案:

答案 0 :(得分:0)

我只能看到你的MYLinkTR点击功能,你试图删除tmp.closest('li')。现在看看我认为最接近的文档正在向上移动,寻找最接近的下一个('li')而不是它正在进行的那个。你确定你不想要tmp.remove()吗?

也许看看是否在点击时首先抛出警报以查看是否正在触发,因为您在错误时没有做任何事情。你可能会发生一些你不知道的事情。其他选项是将LIVE更改为委托并将其附加到ul并查看是否会触发

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