2009-04-21 149 views
1

我无法让我的模态窗口函数绑定到一些返回的数据。我使用的是Cody Lindy的http://swip.codylindley.com/DOMWindowDemo.html">Jquery.DomWindow插件请注意,除了这个问题,所有的功能都正常工作jQuery .getJSON函数需要重新绑定返回的数据

当返回的数据出现问题从我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脚本包含一些数据库脚本(因为它不相关,所以下面没有显示)。re返回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)); 
} 

回答

1

这是发生,因为插件结合在页面加载事件处理程序,然后你添加的事实后,动态内容的网页。最简单的解决方案是将任何你想要将DomWindow插件安装到一个函数中的代码,并在页面加载时调用一次,并在添加新链接时再次调用它。如果它开始双重绑定已经存在的链接,那么你就必须给动态链接一个不同的类并且第二次为该类安装。

编辑

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

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

+0

.live事件(superUntitled正在使用)应该处理任何当前和将来的元素,称为“.deleteThis”。 – 2009-04-21 19:01:23