2011-10-28 5 views
1

私はceeboxをトリガーする関数へのフォーム送信ajax呼び出しを持つdrupalサイトで作業しています。 drupalの関数呼び出しなぜCeeboxは重複するiframeとリンクをトリガーしますか?

$commands = array(); 
    $html = '<a title="" style="display:none;" href="/subscribe" class="ceebox" id="subscribe" rel="iframe width:500 height:350"></a>'; 
//attempt to remove already existing ceebox generated elements 
    $commands[] = ajax_command_replace('#subscribe',''); 
    $commands[] = ajax_command_replace('#cee_iframeContent', ''); 
    $commands[] = ajax_command_replace('#cee_title', ''); 
    $commands[] = ajax_command_append('body', $html); 
    $commands[] = ajax_command_invoke(NULL, 'subscribeOpen', array('subscribe')); 
    return array('#type' => 'ajax', '#commands'=>$commands); 

Javascriptを::次のようにDrupalのPHP関数のコードがある

(function($) { 
     $.fn.subscribeOpen = function(data) { 

      $('#subscribe').ceebox().trigger('click'); 


     }; 



})(jQuery); 

このすべての作品を期待されるように。すなわち、iframe内のceeboxを含む/ subscribeページのコンテンツを表示します。私がceeboxのクローズリンクをクリックするか閉じるためにバックグラウンドをクリックすると、初めてシャットダウンされます。その後、サブリンク・リンクをクリックしてdrupal ajaxとceebox呼び出しをトリガーすると、追加のクローズ・リンク、追加の「Item of 1」タイトルと余分なiFrameウィンドウが追加されます。これは、閉じるをクリックするたびに繰り返され、その後、無限追加関数をトリガします。 #subscribe要素にunbind( '#ceebox')を追加しようとしましたが、jQueryのユニークな()メソッドは利用できません。誰かがこれらの重複したceeboxをアンバインド/削除する方法について光を当てることができますか?

答えて

2

私はこれをjquery.ceebox.jsファイルで調べ、intialise関数がlive()メソッドを実行していることを確認しました。

これは、エレメント上で一度だけ呼び出されるべきであるので、あらゆる種類のすばらしい問題を引き起こします。

$(elem).live("click", function(e){ 

が読み:

$(elem).bind("click", function(e){ 
+0

+1大変な努力をceeboxをトリガーする時には、上記のコードでは、したがって、私はあなたがjquery.ceebox.jsのライン374を交換することをお勧めします、)(ライブを複数回呼び出します。いい答えだ。 – AlphaMale

+0

仕事のおかげで、私は多くの時間の地獄を救った。 – Celos

関連する問題