2010-12-01 11 views
7

Bu kod, bir sitedeki her sayfa için bir görüntü kaydırıcısı için harici bir komut dosyasından çalışıyor. Ben fazladan bir değişken eklemek gerekir böylece görüntü kaydırıcı otomatik olarak dönmesini istemiyorum sayfaların birindeEğer vücut sınıfı X'e eşitse, o zaman bir şeyler yapın?

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

. vücudun partnerCharitiesDetail 'sınıfını varsa ben

... sayfanın gövdesi üzerinde bir sınıf koymak ve çizgisinde bir şey yapmak istiyorum ettik sonra jenerik bir

yerine bu komut dosyasını çalıştırın

Aşağıda denedim (başarı olmadan). Gerçekten 2 soru var,

1) JQuery'de 2 özdeş komut dosyası çalıştırıldığında (bu örnekte olduğu gibi), daha yeni olanı olan eski dosyanın üzerine yazacak ne olur?

2) Nerede yanlış gidiyorum ?! Benim yaklaşımım bunu yapmanın en iyi yolu mu?

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

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

Teşekkürler!

+0

Sanırım benim ipucum koyu metinde "bir sınıfı var"! – Yammi

cevap

17

Kullanım hasClass() yöntem kontrol etmek söyleyebiliriz hasClass

baktı var sınıf. Ayrıca

, kodunuzu biraz tekrarlayan (ve hatta iki kez çalıştırmak için AnythingSlider neden olabilir) - Ben artık şöyle yazarsınız:

$(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

Harika! Bu mükemmel çalışıyor ve çok daha temiz ve daha mantıklı. – Yammi

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

öneririm:

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

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

Bizim kodumuz neredeyse aynı: P – BoltClock

+0

Evet, ikisi de harika çalışıyorlar, teşekkürler! – Yammi

4

Eğer Yani bir eleman belli sahipse

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

bu

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

+0

Teşekkür ederim AnythingSlider ile 'startStopped' nasıl kullanılacağını sormuyor. Vücut sınıfını nasıl kontrol edeceğini soruyor. – BoltClock

+0

Sanırım nokta aldım. Hata arkadaşımı düzeltdiğiniz için teşekkürler –

1

deneyin davranış, çalıştığınız bir şey eklentisinin nasıl çalıştığına bağlıdır. Eklenti belirli bir öğeyi yeniden başlatmak için hesaplarsa, ikinci başlatma işlemi bir öncekini geçersiz kılar, ancak daha büyük olasılıkla DOM'unuzu gerçekten mahvetmek ve olay dinleyicilerini ikiye katlamaktan çok daha fazlasıdır.

Belirtildiği gibi Bir şeyin bir sınıfı olup olmadığını kontrol etme yolu .hasClass ("classname").

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

bu özel durumda sadece

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

yapardım ve belki gelecek olan kaşiflerin Yorum eklemek rağmen.

İlgili konular