私は次のことを試します:
1 つul
はリンク用、もう 1 つはスライド用
<ul class="infoslider">
<li><a data-orbit-link="slidegroup1" href="#">Slides1</a></li>
<li><a data-orbit-link="slidegroup2" href="#">Slides2</a></li>
</ul>
<ul id="infoslider">
<li class="" data-orbit-slide="slidegroup1"> <img src="img1.png" ></li>
<li class="active" data-orbit-slide=""> <img src="img2.png" ></li>
<li class="" data-orbit-slide="slidegroup2"> <img src="img3.png" ></li>
<li class="" data-orbit-slide=""> <img src="img4.png" ></li>
</ul>
「次へ」をクリックするフィールド
<a class="orbit-next" href="#">Next</a>
「orbit-next」をクリックしてスライドを進めます。
JQuery を使用して#infoslider li data-orbit-slide
-attribute をチェックします。空の場合は、文字列が見つかるまで上に移動します。ul.infoslide li
次に、対応するアクティブ クラスを追加します。
$j("a.orbit-next").click(function() {
//select the active li
var test = $j("#infoslider > li.active");
//test, if there is a string in "data-orbit-slide"
if (test.attr("data-orbit-slide").length > 0) {
var link = test.attr("data-orbit-slide");
} else {
//if not, get the elements
var term1 = document.getElementById('infoslider');
//and traverse up until a string is found
var link = $j("#infoslider li.active").prevUntil(term1,"li[data-orbit-slide!='']").attr("data-orbit-slide");
}
//select the coresponding a in div.infoslider
var target = $j("a[data-orbit-link='" + link + "']").parent();
//remove the classes active
$j("div.infoslider > ul > li").removeClass("active");
//add the active class
target.addClass("active");
});
これはほとんど問題なく動作します。しかし:
- ul.infoslider li は常に「1 つ後ろ」です。つまり、スライド img3.png が表示されたとき、アクティブなクラスはまだ "slidegroup1" にあります。「img4.png」が表示されるまで、「slidegroup2」はアクティブ クラスを取得しません。なんで?JQuery/Orbit-Slider/my JQuery によって実行されるイベントの順序と関係がありますか?
- 私が望むものを達成するためのより簡単な方法はありますか?
よろしくお願いします。