php - jQuery .getJSON 函数需要重新绑定(bind)返回的数据

标签 php javascript jquery

我无法将模态窗口函数绑定(bind)到某些返回的数据。我正在使用 Cody Lindy 的 http://swip.codylindley.com/DOMWindowDemo.html">Jquery.DomWindow 插件。请注意,除了这个问题之外,一切正常。

当从 jQuery.getJSON 调用返回的数据包含应该打开模式窗口的链接时,就会出现问题。然而,该链接不被 DOM 识别,因此不受任何函数的约束。

我的 jQuery 函数是:

$(".deleteThis").live("click", function(){
    var $this = $(this);

    $.getJSON(this.href, function(data) {
        if( data.success == '1') {
        $this.parent().html('<span style="background:#f1ffd6;padding:5px;">' +data.msg+'</span>');         
        } 
        else if( data.success == '2') {
        $this.parent().html('<span style="background:#f1ffd6;padding:5px;">' +data.msg+'</span>');         
        }      
        else {alert("Failure (most likely our fault).");}
    });

    return false;
});

jQuery 发送到的 php 脚本包含一些数据库脚本(下面未显示,因为它不相关)。返回JSON数组的相关php代码是这样的:

if($del ==1 ){
    $msg= "$name has been deleted. (<a href='media/delete_coll.php?cid=$cid&delete=0' class='deleteThis' >undo</a>)";
    print json_encode(array("success" => 1,"msg" => $msg));
}

if($del ==0 ){ 
    $msg= "$name <a href='media/editCollab.php?coll=$coll_id' class='absoluteIframeDOMWindow'>edit</a> 
     <a href='media/delete_coll.php?cid=$coll_id&delete=1&coll=$coll' class='deleteThis' > delete</a> | 
     Collaborator has restored.";
     print json_encode(array("success" => 2, "msg" => $msg));
}

最佳答案

发生这种情况是因为插件在页面加载时绑定(bind)事件处理程序,然后您在事后向页面添加动态内容。最简单的解决方案是将需要实例化 DomWindow 插件的任何代码移动到一个函数中,并在页面加载时调用它一次,并在添加新链接时再次调用它。如果它开始双重绑定(bind)已经存在的链接,那么您必须为动态链接提供不同的类,并为该类第二次实例化。

编辑:

这里似乎有一些误解,所以我进一步解释一下:

jQuery live功能(您用于 .deleteThis)旨在解决您遇到的问题。您可能已经知道这一点,因此您正在使用它。上面的段落是因为我相信您所说的是您返回的 DomWindow edit 链接没有按照您的预期打开 DomWindow。这是因为 DomWindow 内部不使用 live 来绑定(bind)事件。因此,当您最初在页面加载时实例化 DomWindow 时,链接会被绑定(bind),但新链接不会。如果您愿意编辑插件的源代码,您可以通过简单地使用 live 直接修复此问题,但将代码移动到函数会更容易(尽管不是“干净”)并在您向页面添加更多内容时调用它。

关于php - jQuery .getJSON 函数需要重新绑定(bind)返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/774033/

相关文章:

php - Codeigniter 上的分页始终在第 1 页上选择

php - 如何从sql查询中删除重复值

javascript - 方法解构不起作用

带有命名 anchor 的 jQuery UI Accordion ,不切换菜单选择

javascript - Javascript 函数的意外结果

javascript - 刷新 DIV 动态

php - 如何将 xml 响应更改为 json?

javascript - 复制div内容并将其放置在其他地方

javascript - 将数组与 dom 元素进行比较,检查是否有相同的 ID

c# - 在 Jquery 中设置选定值后,无法在 C# 上找到下拉选定值