重新加载$(文档).ready(function()重新加载ajax页面

时间:2012-04-30 07:29:46

标签: jquery

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

COMMON 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文件中的函数

3 个答案:

答案 0 :(得分: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已弃用的docs

  

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

答案 1 :(得分:0)

在常见的js文件中使用live()。例如

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

而不是这个用途

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

答案 2 :(得分:0)

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

$.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
            }
        });