嗨,由于某种原因,我的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功能......
答案 0 :(得分:0)
我只能看到你的MYLinkTR点击功能,你试图删除tmp.closest('li')。现在看看我认为最接近的文档正在向上移动,寻找最接近的下一个('li')而不是它正在进行的那个。你确定你不想要tmp.remove()吗?
也许看看是否在点击时首先抛出警报以查看是否正在触发,因为您在错误时没有做任何事情。你可能会发生一些你不知道的事情。其他选项是将LIVE更改为委托并将其附加到ul并查看是否会触发
$('ul.MyApps').delegate('li', 'click', function(e){
alert('does this at least fire');
});