私はフォームをajax呼び出しをceeboxをトリガーする関数に提出するdrupalサイトで作業しています。 Drupal PHP関数のコードは次のとおりです:
$commands = array();
$html = '';
//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);
drupal関数が呼び出すJavascript:
(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をアンバインド/削除する方法について光を当てることができますか?