Plugin, który odpala się zawsze

0

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?

0
dzek69 napisał(a):

http://api.jquery.com/on/

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ąć.

0

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.

0

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ę (:

0
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?

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.