2

この関数を静的ではなく動的にしようとしています。

これは動作する元のコードでした

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

編集

次のコードを使用して要素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);
});
4

1 に答える 1

2

使用した$('#slider').cycle(1);ものは論理的に無効です。

構文は$('#slideshow').cycle('command'); であるため、要素に移動することを選択することはできません。

編集:

APIのオプションを変更することで、要素に移動するか、要素のグループを選択するかを選択できます。

slideExpr:null、//スライドを選択するための式(すべての子以外のものが必要な場合)

例えば:$('#slider').cycle({ slideExpr: $('#slider .child') });

于 2012-05-03T12:02:45.820 に答える