我尝试以下方法:
一个ul
用于链接,另一个用于幻灯片
<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
- 属性。如果它是空的,它会向上遍历,直到找到一个字符串。然后它添加相应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 总是“落后”。即当幻灯片img3.png 出现时,活动类仍在“slidegroup1”上。直到“img4.png”出现“slidegroup2”才获得活动类。为什么?它与 JQuery/Orbit-Slider/my JQuery 执行的事件顺序有关吗?
- 有没有更简单的方法来实现我想要的?
在此先感谢您的帮助。