您好,由于某种原因我的 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 功能......
最佳答案
我所看到的是,在您的 MYLinkTR 点击功能上,您试图删除 tmp.closest('li')。现在查看文档,我认为最接近的是在 DOM 上移动寻找最接近的下一个(“li”),而不是它所在的那个。您确定不需要 tmp.remove() 吗?
也许看看点击时是否首先引发警报,以查看它是否正在触发,因为您没有对错误执行任何操作。这里可能发生了一些你不知道的事情。其他选项是将 LIVE 更改为委托(delegate)并将其附加到 ul 并查看是否会触发
$('ul.MyApps').delegate('li', 'click', function(e){
alert('does this at least fire');
});
关于javascript - jQuery Live() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7702863/