无法在使用AJAX(jQuery)加载的元素上执行函数

时间:2010-06-05 00:41:11

标签: php javascript jquery ajax

我在使用.ajax()发布表单后使用.prepend()来加载数据。

添加新元素后,我的功能将无效。

如果我直接在前置数据中链接js文件,则函数可以正常工作,但是当我发布POST时,我开始将事件相乘。

我觉得它与绑定有关,但我无法弄清楚如何处理它。

任何想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

创建一个封装jEditable逻辑的函数,如下所示:

function initjEditable(){
    $('.review_edit').editable('edit_review.php', {
         indicator : 'Saving...',
         tooltip   : 'Click to edit...'
    });

    $('.review_edit_area').editable('edit_review.php', { 
         type      : 'textarea',
         cancel    : 'Cancel',
         submit    : 'OK',
         indicator : '<img src="/hrt/images/indicator.gif">',
         tooltip   : 'Click to edit...'
    });
}

然后从几个地方调用该函数。第一个是从blurbs链接的onclick .load语句中调用它,如下所示:

$('#adminContainer').load('blurbs.php',function(){ initjEditable(); });

这将确保它第一次运行而不在$(document).ready()函数中。

第二个位置是你的.ajax调用的成功函数,用于添加blurb。看起来像这样:

$.ajax({
    type: 'POST',
    url: "add_review.php",
    data: $(this).parent().serialize(),
    dataType: "html",
    success: function(data){
        $("#results").prepend(data);
        initjEditable();
        $('#addForm').reset();
        $('#add').hide('fast');
    }
});

我假设你需要在loadBlurbs函数启动时运行同样的东西。应该使用可编辑插件保持所有内容运行,而无需重新加载脚本100次。

那时候我有意义吗?