Ceebox niçin yinelenen iframe'leri ve bağlantıları tetikler?

Ben ceebox tetikleyen bir işlevi bir form ajax çağrı formu olan bir Drupal sitesinde çalışıyorum. Drupal PHP işlevi için kod aşağıdaki gibidir:

    $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 işlevi çağrılan Javascript:

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

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


        };



})(jQuery);

Bu tüm beklendiği gibi çalışır; Örneğin, bir iframe içindeki ceebox içeren/abone sayfası içeriği getirir. Sehpandaki bağlantıyı tıklattığımda veya arka plana tıklandığında, ilk kez kapanıyor. Daha sonra Drupal ajax ve ceebox çağrısını tetiklemek için abone bağlantısını tıkladığımda, ekstra bir yakın bağlantı, fazladan '1 numaralı Ürün' başlığı ve fazladan bir iFrame penceresi ekler. Bu, kapattığım her seferinde tekrarlar ve daha sonra infinitum ekleme işlevini tetikler. #Subscribe öğesinin yanı sıra jQuery unique() yönteminin boş bırakılmasına çeşitli kombinasyonları için unbind ('# ceebox') eklemeyi denedim. Bu kopya kutuların nasıl çözüleceğini/çıkarılacağını aydınlatabilir misiniz lütfen?

1

1 cevap

Bunu jquery.ceebox.js dosyasına bir göz atarak anladım ve üzerinde çalışan bir live() yönteminin olması için intialise işlevini buldum.

Bu, her zaman bir öğe üzerinde bir kez çağrılması gerektiği gibi her türlü harika konuya neden olacaktır. Yukarıdaki kod, ceebox'u tetiklerken birden çok kez live() öğesini çağırır, bu nedenle jquery.ceebox.js satır 374'ü değiştirmeniz önerilir:

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

okumak:

$(elem).bind("click", function(e){
2
katma
+1 Büyük Çaba. İyi cevap.
katma yazar AlphaMale, kaynak
Çalıştığın için teşekkürler, bana çok fazla zaman kazandı.
katma yazar Celos, kaynak