Php getJSON函数需要重新绑定返回的数据

Php getJSON函数需要重新绑定返回的数据,php,javascript,jquery,Php,Javascript,Jquery,我很难让模态窗口函数绑定到一些返回的数据。我用的是科迪·林迪的http://swip.codylindley.com/DOMWindowDemo.html“>Jquery.DomWindow插件。请注意,除此问题外,所有功能都正常 当从我的jQuery.getJSON调用返回的数据包含一个应该打开模式窗口的链接时,就会出现问题。但是,DOM无法识别该链接,因此不受任何函数的约束 我的jQuery函数是: $(".deleteThis").live("click", function(){

我很难让模态窗口函数绑定到一些返回的数据。我用的是科迪·林迪的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;
});
$(“.deleteThis”).live(“单击”,函数(){
var$this=$(this);
$.getJSON(this.href,函数(数据){
如果(data.success==“1”){
$this.parent().html(“”+data.msg+“”);
} 
else if(data.success==“2”){
$this.parent().html(“”+data.msg+“”);
}      
else{alert(“失败(很可能是我们的错误”);}
});
返回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));
}
if($del==1){
$msg=“$name已被删除。(”;
打印json_encode(数组(“success”=>1,“msg”=>$msg));
}
如果($del==0){
$msg=“$name”
| 
合作者已恢复。“;
打印json_encode(数组(“success”=>2,“msg”=>$msg));
}

之所以会发生这种情况,是因为插件在页面加载时绑定了事件处理程序,然后在加载后将动态内容添加到页面中。最简单的解决方案是将任何代码移动到一个函数中,然后在页面加载时调用它,并在添加新链接时再次调用它。如果双重绑定已经存在的链接,然后您必须为动态链接提供一个不同的类,并为该类第二次重新设置

编辑

这里似乎存在一些误解,因此我将进一步解释:


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

这是因为插件会在页面加载时绑定事件处理程序,然后在加载后向页面添加动态内容。最简单的解决方案是移动您必须将DomWindow插件安装到其中的任何代码一个函数,并在页面加载时调用它一次,在添加新链接时调用它一次。如果它开始双重绑定现有链接,则必须为动态链接指定一个不同的类,并在该类的第二次恢复

编辑

这里似乎存在一些误解,因此我将进一步解释:


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

.live事件(superUntitled正在使用)应处理任何当前和未来名为“.deleteThis”的元素“。他的问题不在于.deleteThis,他的问题在于class='absoluteIframeDOMWindow'的编辑链接”-我假设他省略了调用DomWindow插件以生成与该类do X的所有链接的部分,但这就是他的问题所在。我创建了一个新函数和一个新类,它可以工作。我知道我将来会遇到麻烦,因为当存在多个“编辑|删除”链接和可能的多个“撤消”链接时,我将不可避免地遇到“双重绑定”(模式窗口中的内容将被调用两次,因此显示两次)。可以做的是将参数传递给要绑定的类所在的函数。默认情况下,您可以使用absoluteIframeDOMWindow,但随后可以添加类似于当前php时间()的内容;并将其添加为一个类。然后用php传递的时间调用binding函数作为类选择器,瞧,只有正确的东西被绑定。在这一点上,您可能需要考虑编辑源代码,但它肯定会起作用。另外,我不确定DomWindow是否是,但是一些做类似事情的插件会考虑到这一点,并且不会进行双重绑定,因此您可能已经脱离了困境。我确信如果多次调用Thickbox(),它不会双重绑定.live事件(superUntitled正在使用)应该处理任何当前和未来名为“.deleteThis”的元素。他的问题不在于.deleteThis,他的问题在于class='absoluteIframeDOMWindow'的编辑链接——我假设他省略了调用DomWindow插件进行编辑的部分