8

我怎样才能让 live('click',function()" 在 ajax 调用后工作并返回带有 html(data) 的内容?经过 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); 

});
4

4 回答 4

25

.live()已弃用。改为使用.on()

$("body").on("click", "divClass", function(event){
    alert('gotClicked');
});

此外,为了确保您正确调用 div,它不应该是 div 名称,而应该是 div 类,以这种方式调用它。

此外,使用live()andon()需要在文档加载时存在的父级别应用。如果您使用的这个 divName 在页面加载时不存在,则无法绑定。但是,如果你绑定到 body 元素,那么当点击发生时它总是会寻找 div。

于 2012-11-27T13:13:57.400 回答
10
 $(document).delegate(".classname","click",function(){
        alert("ok");
    });
于 2014-02-04T08:54:01.443 回答
0

很简单,因为数据是在加载 js 后附加的,所以您需要使用...

$(selector).live('click', function(e){
    alert('this is a click');
});

请注意,如果您经常这样做会影响性能,在某些情况下手动取消绑定和重新绑定可能会更好。

于 2012-11-27T14:02:09.737 回答
0

由于您正在附加通过 ajax 调用返回给您的 HTML 数据,因此您需要在将新 HTML 添加到 DOM 后绑定该函数。如果调用代码:

$('.divName as inside loader').live('click',function(){  ...

在 DOM 更新之前,jQuery 将无法正确绑定事件。我不知道您何时解析/设置代码 .live 代码块。在将返回的 HTML 附加到 DOM 后,您必须应用 .live 代码,无论是在成功回调中还是在成功回调之后立即调用的函数中(如果有的话)。

希望这可以帮助。

于 2012-11-27T13:23:00.943 回答