2016-08-02 5 views
0

ich dieses Stück Code haben:JQuery/on() und nicht existiert Element in Funktion

$(".tabs__nav[data-tab-id='2'").on('click', function (e) { 
    $(this).off(); 
    var projects = []; 
    $('.project').each(function() { 
     var detail = new _detailMozaik2.default($(this)); 
     detail.init(); 
     projects.push(detail); 
    }); 
}); 

'.project' Artikel sind Hauptproblem verursachen diese Elemente nach dem Klicken auf den Reiter erscheinen - Nette Schnipsel (Ajax) - Elemente existieren nicht vor jQuery init die Funktion on().

Wie Code zu bearbeiten, oder welche jQuery-Funktion zu verwenden? Dank

+2

Es Tippfehler ist in '$ (" tabs__nav [data-tab-id = '2'")'. Sie schließen nicht das ']' – brk

+0

Lesen Sie über [__'Event delegation'__] (https://learn.jquery.com/events/event-delegation/) – Rayon

+0

Wurden Syntaxfehler ausgelöst? Sie haben einen Syntaxfehler in Ihrem Code hier in Zeile 1 –

Antwort

0

Das Problem ist, dass .Projects von anderen Tabs immer noch apear, weil sie sowieso die .Project-Klasse haben.

Ihre JQuery mit Ihrem Ziel Registerkarte starten

$(e.target).find('.project').each(function() { 
 
    var detail = new _detailMozaik2.default($(this)); 
 
    detail.init(); 
 
    projects.push(detail); 
 
});

+0

Das funktioniert nicht. .On() Funktion inits (und auch CallBeck), bevor die .Project-Elemente (diese Elemente sind nicht die Ereignishandler) in DOM existiert ... Wie init.on() Callback-Funktion nach 'Klick' Ereignis wird? –

Verwandte Themen