Jak stworzyć plugin w jQuery, który będzie się podpinał do elementu html zawsze, nawet jeśli element jest tworzony później "w locie". Czy po stworzeniu nowego elementu html zawsze w następnej kolejności muszę odpalać plugin, żeby się podpięło?
dzek69 napisał(a):
Ale jak użyć on na własnym pluginie?
$(document).on('mojPlugin','.klasa',function(){});
?
Czy chodzi Ci o:
$(document).on('click','.klasa',function(){
$(this).mojPlugin();
});
? Bo jeśli tak to właśnie czegoś takiego chciałbym uniknąć.
nie wiem co konkretnie robi Twój plugin i jak został zbudowany..
jeżeli przypinasz jakieś zdarzenia do elementów, po prostu przypnij je używając "on" do selektora, który został użyty (this.selector
)
a o tym jak działają "live events" poczytaj np. tu ( nie weryfikowałem, wklejam pierwsze lepsze - http://blog.bigbinary.com/2009/10/14/how-live-method-works-in-jquery-why-it-does-not-work-in-some-cases-when-to-use-livequery.html ) - jeżeli ww. rozwiązanie Cię nie zadowala.
potrzebujesz skorzystać ze zdarzenia, odpalanego za każdym razem gdy zmienia się struktura drzewa DOM
zainteresuj się tym - https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events
tutaj masz działający przykład - http://jsfiddle.net/eQErD/1/
niestety, nie wszystkie przeglądarki to wspierają, ale jak się uprzesz to na wszystko da się znaleźć łatę (:
dzek69 napisał(a):
nie wiem co konkretnie robi Twój plugin i jak został zbudowany..
Niech będzie to najprostszy przykład:
$.fn.color = function(color){
return this.each(function(index,element){
$(element).css('color',color);
}
}
$('p').color();
Powyższy kod zadziała na akapity, które już się znajdują w drzewie DOM, ale co z tymi, które są dodawane dynamicznie?
to odpal funckje przy dodawaniu elementu do dom:
http://stackoverflow.com/questions/15268661/jquery-on-create-event-for-dynamically-created-elements
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.