Trigger-Funktion basiert auf Kategorie Ändern
Habe ich die folgenden. Ich versuche, die Funktion auslösen, werden auf der Grundlage der css-Klasse ändern, aber es funktioniert nicht.
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#slider-banner").bind("cssClassChanged",function(){
console.log("I'm Here!");
if(jQuery("#slider-banner").hasClass('living-nutrients'))
{
jQuery("#home-middle-first").css("background-image","url([image path])");
}
else if(jQuery("#slider-banner").hasClass('right-partner'))
{
jQuery("#home-middle-second").css("background-image","url([image path])");
}
else if(jQuery("#slider-banner").hasClass('with-you'))
{
jQuery("#home-middle-third").css("background-image","url([image path])");
}
});
jQuery("#slider-banner").trigger('cssClassChanged');
Den colsole zeigt meine Konsole.log-Meldung, die beim laden der Seite, aber nicht, wenn die Klasse ändert sich wieder nach dem laden der Seite. Jeder sehen, was ich falsch mache?
UPDATE:
So habe ich gelernt, dass "cssClassChanged" ist nicht echt... ich war der Versuch der Anpassung einer Antwort, die ich gefunden irgendwo anders... mir ist klar, dass, wenn jQuery wurden eine Waffe, wäre ich gefährlich! (wohl wissend, dass ist die halbe Miete, oder?)
Meine versuchen sich gdoron ist Antwort verlinkt unter:
<script type="text/javascript">
jQuery(document).ready(function()
{
function checkForChanges()
{
if(jQuery("#slider-banner").hasClass('living-nutrients'))
{
jQuery("#home-middle-first").css("background-image","url([image path])");
}
else if(jQuery("#slider-banner").hasClass('right-partner'))
{
jQuery("#home-middle-second").css("background-image","url([image path])");
}
else if(jQuery("#slider-banner").hasClass('with-you'))
{
jQuery("#home-middle-third").css("background-image","url([image path])");
}
else
setTimeout(checkForChanges, 500);
}
});
</script>
Ich bin immer noch etwas fehlt, obwohl. Es funktioniert nur für die erste Klasse auf die Seite laden.
Jemand gefragt, wie ich bin ändern der Klassen. Ich bin mit einem slider auf jeder Folie ist ein div mit der ID "slider-banner" und der Klasse variiert je nachdem, welche der drei ID-würde Bereiche darunter, dass ich versuche, schalten Sie das Hintergrundbild für.
- "cssClassChanged" eine gültige HTML-Ereignis?
- Nope ist es nicht...
- Das ist, was ich dachte.
- Wie ändern Sie die Klasse nach dem laden der Seite? @Diodeus Sie können benutzerdefinierte Ereignisse definiert, die in jQuery
- Aber Sie erkennen es selbst, siehe meine Antwort.
- lösen Sie ein nicht-Ereignis native manuell, Sie sollten re-trigger der nicht-Muttersprachler Ereignis manuell jedes mal, wenn Sie die css-Klasse verpasst, auf das Ziel der Veranstaltung.
- Yep - Abfragen für änderungen, hat aber die Gefahr, dass Sie durchaus die CPU-hog.
- klingt wie der Versuch, Tippen Sie in einem Plug-in läuft auf regler...wenn ja, verwenden Sie eine API-plugin, um das benutzerdefinierte Ereignis auslösen
- Stimmt, aber manchmal ist es wie mit den plugins, und vielleicht hat er gar keine Kontrolle über die Klasse ändern, wenn es so ist, muss er schmutzig ist... =)
- Vereinbart. Clevere Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine solche Veranstaltung
cssClassChanged
ich denke, das erklärt alles...10 Stunden habe ich beantwortet, wie man erkennen kann, die Klasse zu ändern, Lesen Sie meine Antwort es
Update:
else
Sie wollen, um zu halten verfolgen von änderungen, mehr als einmal. das update angezeigt.Gibt es keine built-in-Ereignis mit dem Namen "cssClassChanged". Sie haben Ihre eigenen benutzerdefinierten Ereignisses und auslösen manuell beim laden der Seite. Es wird nicht ausgelöst, automatisch-Sie müssen zu nennen
trigger('cssClassChanged')
jedes mal, wenn Sie ändern Sie die CSS-Klasse.Gibt es keine
cssClassChanged
Fall, dass ich mir bewusst bin, müssen Sie manuell auslösen. Jedoch, Sie sind nicht die änderung der Klasse in der code, den Sie geschrieben, und ich bin daher nicht sicher, wo Sie möchten, um es zu lösen.addClass
verwenden$("#slider-banner").trigger("cssClassChanged")
und verwenden Sie Ihre original-code. Auf diese Weise, jedes mal, wenn Sie den Schieberegler rutschen und die Klasse ändert, wird der code ausgelöst wird.können Sie Draht Ihr eigenes click-Ereignis-listener auf slideshow (prev/next) - Tasten - Sie werden Hinzugefügt werden, zusätzlich zu den bestehenden.
in Ihrem Ereignis-Listener können Sie überprüfen, css-Klasse für was auch immer element, das Sie interessiert sind in.