2009-04-21 10 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スクリプトには、データベーススクリプトが含まれています(関連性がないため、下には表示されていません)。 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プラグインを導入する必要のあるコードを関数に移動し、新しいリンクが追加されるたびにページのロード時に呼び出すことです。すでに既存のリンクを二重にバインドする場合は、動的リンクに別のクラスを与え、そのクラスに対してもう一度リンクを張る必要があります。

EDIT

あり、ここでいくつかの誤解であると思われるので、私はさらに説明します:

(あなたが.deleteThisのために使用されている)のjQuery live機能はその問題を解決するために設計されましたあなたは持っている。あなたはおそらくすでにこれを知っているので、あなたはそれを使用しています。上記の段落は、返信しているDomWindow editのリンクが期待通りにDomWindowを開いていないということをあなたが信じているからです。これは、DomWindowがイベントをバインドするために内部的にliveを使用しないためです。したがって、最初にページロード時にDomWindowを導入すると、リンクはバインドされますが、新しいリンクはバインドされません。プラグインのソースコードを編集したい場合は、単にliveを使用してこれを直接修正できますが、コードを関数に移動していつでも呼び出すことは簡単です(クリーンではありません)。ページにコンテンツを追加する

+0

.liveイベント(superUntitledが使用している)は、 ".deleteThis"と呼ばれる現在および将来の要素を処理する必要があります。 –

+0

彼の問題は.deleteではありません。彼の問題は、class = 'absoluteIframeDOMWindow'の編集リンクにあります。私はDomWindowプラグインを呼び出して、そのクラスとのすべてのリンクをXにする部分を中断したと仮定しています。彼の問題はどこにあるのか。 –

+0

私は新しい関数と新しいクラスを作成し、それは動作します。 "編集|削除"リンクと複数の "元に戻す"リンクが複数存在する場合、私は必然的に "ダブルバインド"(モーダルウィンドウが2回呼び出され、2回表示されます)。 – superUntitled

関連する問題