7

在ajax请求中重新加载html页面后,我有一个通用的js文件,我无法访问该文件中的函数, $(document).ready(function()之间的通用JS函数 如何访问它们并触发通用文件中的函数 示例

常见的 JS:

  $(document).ready(function() { 

 $(".agree_btn").click(function(){
        alert(123);             
    });

});

phtml页面中的函数

$('.loadMoreAnswers').live('click', function(event) {

          var location_id = $(this).attr('location_id');
          var counter= $(this).attr('counter');
                $('#loadingAnswer').show();

        $.ajax({
            type: 'POST',
            url: '/daleel/loadmore',
            data: 'location_id='+location_id+'&part='+'answers'+'&answerCounter='+counter,  //with the page number as a parameter
            success: function(msg){

                if(msg.length!=0)    //if no errors
                { $(this).parent().load("view")
                    $('#loadingAnswer').remove();
                    counter+=5;
                    $('#profile-page-answer').append(msg); 

                } 
                else $("#loadingAnswer").remove();

            },
            dataType: 'html'
        });

              });

它像这样渲染 HTML:

<a agreed="no" agreed-content-id="63066" class="agree_btn" id="agree-a63066">
Agree
    </a>

但是当我单击此链接时,它不会运行 Common JS 文件中的函数

4

3 回答 3

8

在ajax成功中重新绑定click事件处理程序

success: function(msg){
 //your code
 $(".agree_btn").bind('click');
}

或者您可以使用delegate低于 1.7 的 jQuery 版本,例如

$(document).delegate(".agree_btn",'click',function(e){
 //your code
});

或者你正在使用 jQuery 版本 1.7+ 使用on方法

$(document).on("click",".agree_btn",function(e){
 //your code
});

不要使用.live其已弃用的文档

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。

于 2012-04-30T07:42:01.497 回答
0

live()在通用 js 文件中使用。例如

$('selector').click(function(){
//function body
})

而不是这种用途

$('selector').live('click', function(){
//function body
})
于 2012-04-30T07:33:04.817 回答
-1

ajax 完成后嵌入 document.ready 函数。ajax 调用后,它将在页面上重新注册脚本。

例如:

$.ajax({
            url: 'deleteEntry',
            data: {'ids': JSON.stringify(getList)},
            async: true,
            success: function (data) {
                location.reload();
            },
            error: function (data) {
                alert('error');
            },
            complete: function (data) {
                //add your script in body here
            }
        });
于 2013-03-27T12:31:35.773 回答