如何在ajax调用之后生成实时('click',function()“工作并使用html(数据)返回内容? 经过4个小时的搜索,我想我最好问,因为我无处可去。
这部分正在运作:
$.ajax({
type: "POST",
url: "loadAlbum.php",
data: dataString,
success: function(data){
$(".loader").html(data, {}, function(){
//content is loaded now
//need to get the function below working in this part of the content
});
},
error : function(data) { }
});
});
我需要这个在上面的ajax中工作:
$('.divName as inside loader').live('click',function(){
alert('gotClicked');
var vidItem = $(this).attr('data');
vidItem = vidItem.split('-'); var bookID = vidItem[0]; var state = vidItem[1];
var dataString = 'bookID='+ bookID + '&state=' + state;
alert(dataString);
});
答案 0 :(得分:23)
.live()
已弃用。请改用.on()
。
$("body").on("click", "divClass", function(event){
alert('gotClicked');
});
另外,为了确保你正确地调用div,它不应该是以这种方式调用它时应该是div类的div名。
此外,使用live()
和on()
需要在文档加载时存在的父级别应用。如果您正在使用的divName在页面加载时不存在,则无法绑定。但是,如果绑定到body元素,那么它将始终在单击发生时查找div。
答案 1 :(得分:9)
$(document).delegate(".classname","click",function(){
alert("ok");
});
答案 2 :(得分:0)
由于您要附加通过ajax调用返回给您的HTML数据,因此需要在将新HTML添加到DOM后绑定该函数。如果你打电话给代码:
$('.divName as inside loader').live('click',function(){ ...
在DOM更新之前,jQuery将无法正确绑定事件。我不知道你何时解析/设置代码.live代码块。在将返回的HTML附加到DOM后,您必须应用.live代码,无论是在成功回调中还是在成功回调后立即调用的函数(如果有的话)。
希望这有帮助。
答案 3 :(得分:0)
简单,因为在加载js后附加数据,你需要使用...
$(selector).live('click', function(e){
alert('this is a click');
});
请注意,如果你经常这样做会有性能损失,在某些情况下手动取消绑定和重新绑定可能会更好。