konakona
ajax过来的innerHTML不能执行javascript代码的解决方法
ajax过来的innerHTML不能执行javascript代码的解决方法

今天遇到这个问题,挺郁闷的……

竟然还要多做一层操作,唉~

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


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

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

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

返回的内容是:

记录(24)
×

而我如下代码:

$(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("操作成功");
            }
        }
    })
}

}

这些都是比较细的东西,平时没用到就没什么发现,哎~~记在博客~下次用~

赞赏
首页      程序开发      前端技术      ajax过来的innerHTML不能执行javascript代码的解决方法
https://secure.gravatar.com/avatar/3b712b34a0e1b689cfb524c9c6bcdc47?s=256&r=g

团哥

文章作者

继续玩我的CODE,让别人说去。 低调,就是这么自信。

小山哥进行回复 取消回复

textsms
account_circle
email

  • https://secure.gravatar.com/avatar/d615d5793929e8c7d70eab5f00f7f5f1?s=80&r=g

    团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~团哥~~

    9年前回复
  • https://secure.gravatar.com/avatar/?s=80&r=g

    姐啊,删了吧~ -.-
    你把 $(“.deletereplyitem”).click(function(){
    改成$(“.deletereplyitem”).live(function(){
    就可以执行啦~ – -!

    顺便~ 求文中的代码显示插件

    9年前回复
    • https://secure.gravatar.com/avatar/3b712b34a0e1b689cfb524c9c6bcdc47?s=80&r=g
      团团博主

      @小山哥: 1.3才支持的方法呢, 不过我们网站的程序基本都是用1.2的。
      当然我也可以给后台某一个文件单独使用1.4,总之就是可以使用live了……
      脱线的代价是很恐怖的(话说为什么09年要用1.2做整站呢?)。
      小山果然可靠~
      你要啥中文代码显示插件?

      9年前回复
  • https://secure.gravatar.com/avatar/?s=80&r=g

    就是显示源码的东东,

    9年前回复

konakona

ajax过来的innerHTML不能执行javascript代码的解决方法
通过ajax回来的html数据,无法使用js代码的解决方法。
扫描二维码继续阅读
2010-08-25