jQuery Plugin Method aufrufen über einen Selector

Hallo, 

gibt es eine Möglichkeit eine jQuery Plugin Methode über einen Selector außerhalb vom Plugin aufzurufen oder zu binden?

Was ich genau machen möchte: 

$("test-next").on("click", function (event) { $.imageSlider().slideNext(event); });

Bekomme diesen Error: Uncaught TypeError: $.imageSlider(…).slideNext is not a function 

Vielen Dank

Hallo,

warum definierst Du Dein HTML Element „test-next“ nicht einfach so, dass der Plugin Selektor passt und es die Funktionalität automatisch auf das Element bindet? Nach was selektiert wird, steht immer oben im Plugin in den defaults. Wenn Du nichts anderes mitgegeben hast beim Plugin-Aufruf, dann werden die Standard Selektoren hergenommen.

 

MFG

 

derwunner

@derwunner schrieb:

Hallo,

warum definierst Du Dein HTML Element „test-next“ nicht einfach so, dass der Plugin Selektor passt und es die Funktionalität automatisch auf das Element bindet? Nach was selektiert wird, steht immer oben im Plugin in den defaults. Wenn Du nichts anderes mitgegeben hast beim Plugin-Aufruf, dann werden die Standard Selektoren hergenommen.

 

MFG

 

derwunner

Hallo derwunner,

erstmal danke für deine Antwort.

Der Grund warum ich die Navigation nicht standardmäßig unterstützen möchte, nur in benutzerdefinierten Fällen möchte ich diese Möglichkeit unterstützen, wenn man diese benötigt. Die Problematik ist ich diesen Slider und ein Navigations Element Seperat als einzeln wiederverndbare Componenten definieren möchte und diese dann über den oben gezeigten Beispiel-Snippet „verbinden“ möchte. Und bei der Plugin Regestration im Statemanager möchte ich diese nicht registrieren, weil das nicht sehr elegant ist für einen normalen Benutzer.

Ich hoffe Du kannst mein Problem im Ansatz verstehen. 

Mit freundlichen Grüßen, 
Brian

Hallo @mioga_brian‍,

diese Möglichkeit besteht natürlich. Du brauchst einfach nur den Selekor des Elements, welches das Plugin initialisiert und den Namen des Plugins:

$('*[data-image-slider="true"]').data('plugin_swImageSlider').slideNext();

Wir stellen die Instanz des Plugins In-Memory über das DOM-Element zur Verfügung. Dies funktioniert mit jeglichen Plugin, welches mit unsere jQuery Plugin Basis erstellt wurde.

Viele Grüße,
Stephan Pohl  Shopware

2 „Gefällt mir“

@mioga_brian schrieb:

Die Problematik ist ich diesen Slider und ein Navigations Element Seperat als einzeln wiederverndbare Componenten definieren möchte und diese dann über den oben gezeigten Beispiel-Snippet „verbinden“ möchte. Und bei der Plugin Regestration im Statemanager möchte ich diese nicht registrieren, weil das nicht sehr elegant ist für einen normalen Benutzer.

Ich hoffe Du kannst mein Problem im Ansatz verstehen. 

Ja, habe ich schon so weit richtig verstanden. Aber ich denke Du hast meine vorherige Antwort nicht so richtig verstanden: Wenn Dein HTML Element, also dein div oder span Element dieselbe Klasse hat wie das Navigations-div vom Slider, dann wird diese Funktionalität vom Slider Plugin auch auf Dein div mit übertragen. Folglich hast Du genau das, was Du willst: Widerverwendbare Komponenten.

Und der StateManager ist schon gut, das ist leichtes media query Handling für JavaScript. Leichter und schneller gehts eig kaum in JavaScript responsive Sachen hin zu bekommen mit den üblichen Device Größen.

1 „Gefällt mir“

@derwunner schrieb:

@mioga_brian schrieb:

Die Problematik ist ich diesen Slider und ein Navigations Element Seperat als einzeln wiederverndbare Componenten definieren möchte und diese dann über den oben gezeigten Beispiel-Snippet „verbinden“ möchte. Und bei der Plugin Regestration im Statemanager möchte ich diese nicht registrieren, weil das nicht sehr elegant ist für einen normalen Benutzer.

Ich hoffe Du kannst mein Problem im Ansatz verstehen. 

Ja, habe ich schon so weit richtig verstanden. Aber ich denke Du hast meine vorherige Antwort nicht so richtig verstanden: Wenn Dein HTML Element, also dein div oder span Element dieselbe Klasse hat wie das Navigations-div vom Slider, dann wird diese Funktionalität vom Slider Plugin auch auf Dein div mit übertragen. Folglich hast Du genau das, was Du willst: Widerverwendbare Komponenten.

Und der StateManager ist schon gut, das ist leichtes media query Handling für JavaScript. Leichter und schneller gehts eig kaum in JavaScript responsive Sachen hin zu bekommen mit den üblichen Device Größen.

Stimmt, habe es vohrin nicht richtig verstanden, aber jetzt hast es klick gemacht. Deine Variante ist auch eine Option, aber ich finde Variante Stephan Pohl besser. 
Und ja der StateManager ist gut, damit hast du auch Recht. 

Trotzdem, vielen Dank für deinen Input.

Mit freundlichen Grüßen, 
Brian