【发布时间】:2012-12-07 02:47:06
【问题描述】:
(jQuery 的新功能)
尝试编写一个函数,当单击箭头时移动活动类..
html
<div id="steps">
<a href="#1" data-ref="dynamic-tabs slider-id">
<div class="step step-1 active">
<div class="step-img">
<img width="175" height="120" src="http://site.com/img.png">
</div>
<div class="step-title">Schedule Online or Wave Down a Biker</div>
<div class="step-over"></div>
</div>
</a>
<a href="#2" data-ref="dynamic-tabs slider-id">
<div class="step step-2">
<div class="step-img">
<img width="175" height="120" src="http://site.com/img.png">
</div>
<div class="step-title">We Bike to & Clean Your Car</div>
<div class="step-over"></div>
</div>
</a>
<a href="#3" data-ref="dynamic-tabs slider-id">
<div class="step step-3">
<div class="step-img">
<img width="175" height="120" src="http://site.com/img.png">
</div>
<div class="step-title">Come Back to a Clean Car</div>
<div class="step-over"></div>
</div>
</a>
</div>
<div class="nav-right" data-dir="next" title="Slide right">
<a href="#">right »</a>
</div>
jQuery 我正在尝试
$(".nav-right a").click(function() {
if( $(".step-1").is('.active') ) {
$(".step-1").removeClass("active");
$(".step-2").addClass("active");
}
});
$(".nav-right a").click(function() {
if( $(".step-2").is(".active") ) {
$(".step-2").removeClass("active");
$(".step-3").addClass("active");
}
});
$(".nav-right a").click(function() {
if( $(".step-3").is(".active") ) {
$(".step-3").removeClass("active");
$(".step-1").addClass("active");
}
});
【问题讨论】:
-
和?问题是什么?为什么同一个元素需要三个点击事件?为什么不只是一个事件处理程序并将所有逻辑放入其中。
-
您定义的每个后续单击事件处理程序最有可能的问题是覆盖前一个。因此,创建一个事件处理程序,而不是三个,然后编写一个 if/else if/else if 来组合您的所有逻辑。
-
另外,您应该确保在 document.ready() 函数中定义此事件处理程序,以使 .nav-right 元素被定义
-
@thescientist 你的 cmets 工作了。如果您“回答”这个问题,您将得到正确的答案。您在其他人之前发表了评论。
-
@Reuben 下次我会确保不会在沙发上睡着 ;)
标签: javascript jquery class if-statement