2010-12-01 5 views
7

J'ai ce code exécuté à partir d'un script externe pour un curseur d'image pour chaque page sur un site.Si la classe de corps est égale à X alors faire quelque chose?

$(document).ready(function() { 
    $("#slideshow").show(); 
    $('#slider1').anythingSlider({ 
    buildNavigation: false, 
    delay: 8000 
    }) 

Sur l'une des pages que je ne veux pas le curseur sur l'image pour faire pivoter automatiquement, alors je dois ajouter une variable supplémentaire. J'ai mis une classe sur le corps de la page et que vous voulez faire quelque chose le long des lignes de ...

Si le corps a une classe de « partnerCharitiesDetail » puis exécutez ce script au lieu de celui

générique

C'est ce que j'ai essayé ci-dessous (sans succès). J'ai vraiment 2 questions vraiment,

1) Que se passe-t-il dans jQuery quand il y a 2 scripts identiques en cours d'exécution (comme cet exemple), va-t-il remplacer l'ancien par le plus récent?

2) Où vais-je me tromper?! Est-ce que mon approche est la meilleure façon de le faire?

$(document).ready(function() { 
$("#slideshow").show(); 
    $('#slider1').anythingSlider({ 
    buildNavigation: false, 
    delay: 8000 
    }) 

    if ($('body.partnerCharitiesDetail').length > 0){ 
    $('#slider1').anythingSlider({ 
    buildNavigation: false, 
    delay: 8000, 
    startStopped: false 
}) 
} 

Merci!

+0

Je suppose que mon indice était dans le texte en gras "a une classe"! – Yammi

Répondre

17

Utilisez la méthode hasClass() pour vérifier si un élément a un certain classe.

En outre, votre code est un peu répétitif (et pourrait même provoquer AnythingSlider courir deux fois) - Je voudrais écrire comme ceci:

$(document).ready(function() { 
    // Initialize options first 
    var options = { 
     buildNavigation: false, 
     delay: 8000 
    }; 

    // Only disable startStopped if the body has this class 
    if ($('body').hasClass('partnerCharitiesDetail')) { 
     options.startStopped = false; 
    } 

    // Show the #slideshow element and start the slideshow 
    $('#slideshow').show(); 
    $('#slider1').anythingSlider(options); 
}); 
+0

Super! Cela fonctionne parfaitement et est beaucoup plus propre et plus logique. Merci – Yammi

2
if ($('body').hasClass('partnerCharitiesDetail')) { 
    ... 

Je suggère:

$("#slideshow").show(); 
var options = { 
    buildNavigation: false, 
    delay: 8000 
    }; 

if ($('body').hasClass('partnerCharitiesDetail')) { 
    options.startStopped = false; 
} 
$('#slider1').anythingSlider(options); 
+0

Notre code est presque identique: P – BoltClock

+0

Oui, ils fonctionnent tous deux très bien, merci! – Yammi

4

Avez-vous regardé hasClass

On pourrait donc dire

if($("body").hasClass("partnerCharitiesDetail")) 
{ 
} 
else 
{ 
} 
0

Essayez cette

 
if($("body").isClass(".partnerCharitiesDetail")) { 
//code if body has specific class name 
} 
else { 
//code if body has no specific class name 
} 

+0

Il ne demande pas comment utiliser 'startStopped' avec AnythingSlider. Il demande comment vérifier la classe de corps. – BoltClock

+0

Je pense que j'ai eu votre point. Merci d'avoir corrigé mon erreur d'ami –

1

Le Le comportement dépend du fonctionnement du plugin anythingSlider que vous utilisez. Si le plugin compte pour réinitialiser un certain élément alors la seconde initialisation remplacerait la précédente, mais il est plus probable que vous ne feriez que gâcher votre DOM et que vous doubliez les écouteurs d'événement.

Comme indiqué, le bon façon de vérifier si quelque chose a une classe est .hasClass ("classname").

if($("body").hasClass("partnerCharitiesDetail")) { 
} 
else { 
} 

Bien que dans ce cas précis que je venais de faire

$('#slider1').anythingSlider({ 
    buildNavigation: false, 
    delay: 8000, 
    startStopped: !($("body").hasClass("partnerCharitiesDetail")) 
}) 

et peut-être laisser un commentaire pour les futurs explorateurs.

Questions connexes