Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 加载ajax内容后单击“不工作”_Jquery_Ajax - Fatal编程技术网

Jquery 加载ajax内容后单击“不工作”

Jquery 加载ajax内容后单击“不工作”,jquery,ajax,Jquery,Ajax,在ajax调用并返回包含html(数据)的内容后,如何使live('click',function()”生效? 经过4个小时的搜索,我想我最好问一下,因为我一无所获 这一部分正在发挥作用: $.ajax({ type: "POST", url: "loadAlbum.php", data: dataString, success: function(data){ $(".loader").html(data, {}, function(){

在ajax调用并返回包含html(数据)的内容后,如何使live('click',function()”生效? 经过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); 

});
.live()
已被弃用。请改用
.on()

$("body").on("click", "divClass", function(event){
    alert('gotClicked');
});
另外,为了确保正确调用div,以这种方式调用div时,它不应该是div名称,而应该是div类


另外,使用
live()
on()
需要在文档加载时存在的父级应用。如果在页面加载时您使用的这个divName不存在,则无法绑定到它。但是,如果绑定到body元素,则在单击时它将始终查找div。

因为您正在添加通过ajax c返回给您的HTML数据总之,在将新HTML添加到DOM后,需要绑定函数。如果调用代码:

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


希望这有帮助。

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

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

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

而使用
live()
不是很理想,你所拥有的应该可以工作。你是否看到你的
gotClicked
警报?或者控制台中有任何错误?在ajax完成并显示内容后,我什么也没有得到。很抱歉,我们仍然在运行一个旧的jquery。使用$(选择器).on()函数。从jquery 1.7开始,.Live()方法已被弃用。也许你应该发布一个内容和真实代码的示例,而不是准代码,因为它不能帮助我们解决打字错误等问题。如果你绑定到body元素,这听起来很好"。我想我必须弄清楚。有没有一个好的例子可以使用?@KJS:我能想到的最好的例子是在@KJS:哦,我上面的代码示例绑定到body元素。它应该可以捕捉到对
中类为
divClass
的元素的任何单击。谢谢Joel!我这是我将用来解决问题的代码。然而,在“url:”loadAlbum.php“脚本中使用jquery似乎也能解决问题。更简单,但您的解决方案可能更合适。请注意,第二个参数“divClass”可以是class或id。
$(“body”)。on(“click”、“.divClass”、function(event){
或\$(“body”)。on(“click”、”#divId“,函数(事件){\n我会为你祈祷。
 $(document).delegate(".classname","click",function(){
        alert("ok");
    });