Nima uchun Ceebox ikki nusxadagi iframe va bog'lanishlarni ishga soladi?

Drupal saytida ishlayapman, bu formada ajaxning chaqirig'i telegrafni ishga tushiruvchi funksiyaga topshiradi. Drupal PHP funktsiyasi uchun kod quyidagicha:

    $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);

Ushbu Drupal funksiyasi chaqirgan Javascript:

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

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


        };



})(jQuery);

Bu barcha kutilganidek ishlaydi; ya'ni, iframe ichida tortib oluvchi/tarkibga obuna bo'lgan kontentni ko'taradi. Tushirgichdagi tugmani bosib yoki yopish uchun orqa fonni bosganimda, u birinchi marta yopiladi. Drupal ajax va ceebox chaqiruvini tetiklash uchun obuna havolasini bosganimda qo'shimcha bir yopish havolasini, qo'shimcha 1-bandning 1-qismini va qo'shimcha iFrame oynasini qo'shadi. Bu men yaqinlashib bosgan har bir narsani takrorlaydi va so'ngra funktsiyani tetiklash infinitumni qo'shadi. #Subscribe elementiga va shuningdek, jQuery noyob() usulining turli xil kombinatsiyasini yo'qotish uchun ("# ceebox") qo'shishga harakat qildim. Bu ikki nusxadagi tuxumlarni qanday qilib ochish/olib tashlash haqida iloji bormi?

1

1 javoblar

Buni jquery.ceebox.js fayli orqali ko'rib chiqayapman va intialis vazifasini ustida ishlaydigan live() uslubini topdim.

Bu har qanday ajoyib mavzularga olib keladi, chunki u faqat bir marta element sifatida nomlanishi kerak. Yuqorida keltirilgan kod ceeboxni ishga tushirishda jonli() bir necha marta chaqiradi, shuning uchun jquery.ceebox.js ning 374-satrini almashtirishingizni tavsiya qilaman:

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

o'qish:

$(elem).bind("click", function(e){
2
qo'shib qo'ydi
+1 Buyuk kuch. Yaxshi javob.
qo'shib qo'ydi muallif AlphaMale, manba
Ishingiz uchun tashakkur, menga ko'p vaqt jahannamni saqladi.
qo'shib qo'ydi muallif Celos, manba
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb