2012-05-03 55 views
2

試圖讓這個函數動態而不是靜態。jQuery Cycle Plugin動態功能

這是原來的代碼工作

$('#goto1').click(function(e) { 
    e.preventDefault(); 
    $('#slider').cycle(1); 
}); 

這裏是動態功能(不工作)。警報輸出正確的ID,但滑塊不會循環。

$('.cycle_goto').live('click', function(e) { 
    e.preventDefault(); 
    var cycle_id = $(this).attr('id').substr(4); 
    alert ('##'+cycle_id+'##'); 
    $('#slider').cycle(cycle_id); 
}); 

的HTML如下:

<div id="slider"> 
    <img class="slide" src="<?=FE_URL;?>images/slide1.jpg" style="position: relative !important;" alt="Slide 1."> 
    <img class="slide" src="<?=FE_URL;?>images/slide2.jpg" alt="Slide 2"> 
    <img class="slide" src="<?=FE_URL;?>images/slide3.jpg" alt="Slide 3"> 
</div> 
<div class="slider_nav"> 
    <ul id="slider_nav_ul"> 
     <li><a class="cycle_goto" id="goto1" href="#">Hotel &amp; Residence<span class="arrow"><!-- --></span></a></li> 
     <li><a class="cycle_goto" id="goto2" href="#">Yacht Charter<span class="arrow"><!-- --></span></a></li> 
     <li><a class="cycle_goto" id="goto3" href="#">Properties<span class="arrow"><!-- --></span></a></li> 
    </ul> 
</div> 

EDIT

得到它的工作由元件ID用下面的代碼轉換爲整數:

$('.cycle_goto').live('click', function(e) { 
    e.preventDefault(); 
    var myString = $(this).attr('id').substr(4); 
    var myInteger; 
    myInteger = parseInt(myString); 
    var cycle_id = myInteger; 
    $('#slider').cycle(cycle_id); 
}); 
+1

循環調用與cycle_id = 1始終相同的動態函數嗎?或者它裏面的一些靜態值?你爲什麼不給HTML部分。 – Niranjan

+0

已更新爲顯示html。 – James

+0

另外,是的,它會始終循環ID cycle_id = 1。 – James

回答

2

您已經使用$('#slider').cycle(1);邏輯上無效。

語法是$('#slideshow').cycle('command');,因此你不能選擇去一個元素。

編輯:

你可以選擇去一個元素或通過改變API中的選項中選擇一組元素:

slideExpr:空,//表達式選擇幻燈片(如果事情 以外所有的孩子是必需的)

如:$('#slider').cycle({ slideExpr: $('#slider .child') });

+0

明白了,看看上面的修改。謝謝你的幫助 :-) – James