网站地图    收藏   

主页 > 前端 > javascript >

ajax加载页面后加载页面的javascript不能执行

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] ajax加载页面后加载页面的javascript不能执行吧,有很多朋友都会碰到这种问题,下面我们来提供一些解决办法。...

问题分析


先是容器,一开始是隐藏的。

 代码如下 复制代码

<SCRIPT>
$(document).ready(function() {
$('add_div').hide();
});
</SCRIPT>
<DIV class=add_div></DIV>

这个div是空的,用于将$.load()的内容放入其中。

当我们点击“查看”按钮后,执行如下js:

 代码如下 复制代码

function edit(){
    $("#add_div").css("display","");
    //清空,并将数据放入
    $('#add_div').html('');
    $("#add_div").load('?',{
        act:"list"
    });
}

返回的内容是:

 代码如下 复制代码

<DIV id=reply_list><DIV style="MARGIN: 2px; FLOAT: left; CURSOR: pointer" id=24 class=replyItem>记录(24)</DIV>
<A style="MARGIN: 2px; FONT-SIZE: 14px" id=24 class=deletereplyitem title=删除 href="javascript:void(0)" jQuery18306790571601728192="39">×</A>
<DIV style="CLEAR: both"></DIV>
</DIV>

而我如下代码:

 代码如下 复制代码

$(document).ready(function() {
    // for delete
    $(".deletereplyitem").click(function(){
        alert('delete');
        $.ajax({
            type:"POST",
            data:"action=delete&destTable=replytable&masterId="+this.id+"&reviewId="+$("input[name=reviewId]").val(),
            url:"?",
            dataType:"json",
            success:function(data){
                if(data.num>0){
                    alert(data.error);
                }
                if(data.num==0){
                    alert("操作成功");
                }
            }
        })
    })
    //显示一条详细
    $(".replyItem").click(function(){
        alert('进来!!');
        $.ajax({
            type:"POST",
            data:"act=getOne&id="+this.id,
            url:"?",
            dataType:"json",
            success:function(data){
                if(data.num>0){
                    alert(data.error);
                }
                if(data.num==0){
                    alert('雅蠛蝶!'+data);
                    //如果之前添加过内容,那么此刻打开编辑器还是存在上次编辑的东西, 所以要先清空编辑器
                    //KE.html('content',"");    //firefox存在兼容bug
                    KE.util.setFullHtml('replycontent', '');
                    //KE.html('content',data);
                    KE.util.setFullHtml('replycontent', data);
                }
            }
        })
    })
})


此时当我们点击 “X” 的时候是没有任何反应的…
也没有js错误…

-.-# 很是郁闷调了半天,都还是这样,怪了,于是找芳芳的麻烦~(我js不行~)

然后芳芳告诉我必须再“注册”一次这些方法。并演示了一下,心服口服……膜拜~女神~

于是我将方法封装了一下,形容了如下代码(重点是加了回调函数):

 代码如下 复制代码

function edit(){
    $("#add_div").css("display","");
    //清空,并将数据放入
    $('#add_div').html('');
    $("#add_div").load('?',{
        act:"list"
    },function(){
        $(".deletereplyitem").click(delReplyOne);   //获取一条详细
$(".replyItem").click(delReplyOne);   //删除一条
    });

function getReplyDetail(){
    $.ajax({
        type:"POST",
        data:"act=getOne&id="+this.id,
        url:"?",
        dataType:"json",
        success:function(data){
            if(data.num>0){
                alert(data.error);
            }
            if(data.num==0){
                alert('雅蠛蝶!'+data);
                //如果之前添加过内容,那么此刻打开编辑器还是存在上次编辑的东西, 所以要先清空编辑器
                //KE.html('content',"");    //firefox存在兼容bug
                KE.util.setFullHtml('replycontent', '');
                //KE.html('content',data);
                KE.util.setFullHtml('replycontent', data);
            }
        }
    })
}

function delReplyOne(){
    $.ajax({
        type:"POST",
        data:"action=delete&destTable=replytable&masterId="+this.id+"&reviewId="+$("input[name=reviewId]").val(),
        url:"?",
        dataType:"json",
        success:function(data){
            if(data.num>0){
                alert(data.error);
            }
            if(data.num==0){
                alert("操作成功");
            }
        }
    })
}

}

这些都是比较细的东西

再看一个实例

 代码如下 复制代码

$(document).ready(function() {
    $('content_div').hide();

    $('#list_user').click(function(event){
        event.preventDefault();
        load_user();
    });
});

function load_user(){
    //load page
    $("#content_div").load('your page url',function(){
        //回调函数,在这里注册被加载页面需要的事件
        $(".deleteItem").click(delItem);
        $(".editItem").click(editItem);
    });

    function delItem(){
        $.ajax({
            type:"POST",
            url:"your url",
            dataType:"json",
            success:function(data){
            }
        });
    }

    function editItem(){
        $.ajax({
            type:"POST",
            url:"you url",
            dataType:"json",
            success:function(data){
            }
        });
    }
}

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论