2010-12-01 25 views
7

我有一個外部腳本爲網站上的每個頁面的圖像滑塊運行此代碼。如果body class等於X,那麼做些什麼?

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

在我不希望,所以我需要添加一個額外的變量圖像滑塊自動旋轉頁面。我已經把一個類的頁面的主體和想做的事的東西線...

如果體內有一類「partnerCharitiesDetail」的,然後運行該腳本,而不是普通的一個

這是我在下面試過的(沒有成功)。我真的有兩個問題,

1)當有兩個相同的腳本運行(如本例)時,jQuery會發生什麼情況,它會用較新的腳本覆蓋較舊的腳本嗎?

2)我哪裏錯了?我的方法是做到這一點的最佳方式嗎?

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

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

謝謝!

+0

我想我的線索是粗體文本「有班」! – Yammi 2010-12-01 12:27:48

回答

17

使用hasClass()方法來檢查元素是否具有一定的類。

而且,你的代碼是有點重複(甚至可能導致AnythingSlider運行兩次) - 我會寫這樣的而不是:

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

太棒了!這工作完美,是更清潔,更有意義。謝謝 – Yammi 2010-12-01 12:26:57

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

我建議:

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

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

我們的代碼幾乎完全相同:P – BoltClock 2010-12-01 12:18:10

+0

是的,他們都很好,謝謝! – Yammi 2010-12-01 12:28:47

4

有你看着hasClass

所以你可以說

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

試試這個

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

1

的行爲取決於你正在使用的whatSlider插件的工作方式。如果插件需要重新初始化某個元素,那麼第二次初始化將會覆蓋之前的,但更有可能的是,您只會將DOM弄亂,並使事件監聽器翻一番。

正如指出的那樣,檢查某個類是否具有.hasClass(「classname」)的方法。

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

雖然在這個特定的情況下,我只是做

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

,也許添加評論爲未來的探險家。

相關問題