2011-11-07 37 views
1

我在自定義Magento商店上使用bxSlider插件(類似於jcarousel的滑塊)。jquery - 在document.ready上創建實例後更改對象屬性()

在滑塊通過這種方式istantiated上documet.ready()(在頭HTML部分):

jQuery('#slider2').bxSlider({ 
    pause: 4000, 
    auto: true, 
    autoControls: true, 
    displaySlideQty: 4, 
    moveSlideQty: 1 
}); 

我想自動屬性更改爲false在PHP代碼,如果滑塊的項目數小於5。我試着去改變它:

<?php 
    // slider items count 
    $prom_count = $this->getPromotionalProducts()->count();; 
?> 
<?php if($prom_count<5): ?> 
    <script> 
     $("#slider2").attr('auto','false');  
    </script> 
<?php endif; ?> 

,但它不工作,所以我不知道,實例化DOM準備對象的屬性可以用這種方式來改變。任何人都可以幫忙?

回答

1

從jQuery庫的作品與HTML元素屬性attr - 方法:

<img src="..." alt="..."> 

在這種情況下,srcalt是 「屬性」。

bxSlider通過給bxSlider函數配置一個數組來配置。傳遞給函數後,您不能更改此數組。

你可以做什麼來切換自動顯示是使用bxSlider的stopShow()功能。爲了可能做到這一點,你要救你創建的bxSlider實例:

var slider = jQuery('#slider2').bxSlider({ 
    ... 
}); 

所以,你可以再調用這個函數對象上:

slider.stopShow(); 

與PHP和JavaScript這樣做混合的方式(如你所建議的)很醜,應該避免。

相反,你應該使用JavaScript的唯一的解決辦法:

var slider = jQuery('#slider2').bxSlider({ 
    auto: true, 
    ... 
}); 
if (slider.getSlideCount() < 5){ 
    slider.stopShow(); 
} 

注意getSlideCount()回報幻燈片的數量,這是不guarantied是在畫廊圖像的數量!一次顯示的幻燈片數量可以由屬性displaySlideQty設置。然而,默認值是1。


它接縫,有這將導致startShowstopShow -functions不工作了一個錯誤:https://github.com/wandoledzep/bxslider/pull/43

作爲一個骯髒的解決方法,你可以做這樣的事情:

<?php 
    echo "<script type=\"text/javascript\"> 
     jQuery('#slider2').bxSlider({ 
      pause: 4000, 
      autoControls: true, 
      displaySlideQty: 4,"; 
    if($prom_count >= 5) echo "auto: true,"; 
    echo "moveSlideQty: 1 
     }); 
    </script>"; 
?> 
+0

...嘗試解決方案... 。 – Luke

+0

謝謝。以及我試過你的解決方案,但仍然沒有工作。這是在頭文件部分中調用的通用.js文件中的代碼:http://dpaste.com/648712/ 它不工作,我可以只在物體部分計數項目... – Luke

+0

我意識到,這個接縫是一個問題,有一個修復,等待被拉入項目:https://github.com/wandoledzep/bxslider/pull/43所以你需要等待或找到另一種解決方案... –

1

看起來好像沒有API這個功能。如果你使用reloadShow(),可能會再次加載配置。如果這不能幫助你閱讀source code

+0

有是一個這樣做的功能。看我的帖子。 –

0

這將在它自己的元素上設置auto屬性,而不是插件的自動選項。它看起來並不像插件有實例化後改變選項的能力,儘管我只是快速瀏覽了一下。

當您通過首先將php代碼運行插件時,您不能設置正確的auto值嗎?

+0

不,因爲生成滑塊html部分的模板和php代碼與頭部部分不同...我只能在body html部分中計算滑塊項目 – Luke