首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果类也是类那么..。单击移动活动类

如果类也是类那么..。单击移动活动类
EN

Stack Overflow用户
提问于 2012-12-07 02:47:06
回答 4查看 613关注 0票数 0

(新设于jQuery)

试图编写一个在单击箭头时移动活动类的函数。

html

代码语言:javascript
复制
<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我在尝试

代码语言:javascript
复制
$(".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");
    } 
});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-07 03:05:43

问题似乎是你创建了3(原文如此!)事件处理程序,当您单击链接时,事件处理程序会依次触发。

  1. 第一个处理程序(步骤1是活动的)将步骤2设置为active。
  2. 第二个处理程序(步骤2现在处于活动状态)将步骤3设置为active。
  3. 第三个处理程序(步骤3现在处于活动状态)再次将步骤1设置为active。

最后,什么也没有发生。

解决方案:只使用一个事件处理程序,if-else语句而不是只使用if-语句:

代码语言:javascript
复制
$(".nav-right a").click(function() {
    if( $(".step-1").is('.active') ) {
      $(".step-1").removeClass("active");
      $(".step-2").addClass("active");
    } else if( $(".step-2").is(".active") ) {
      $(".step-2").removeClass("active");
      $(".step-3").addClass("active");
    } else if( $(".step-3").is(".active") ) {
      $(".step-3").removeClass("active");
      $(".step-1").addClass("active");
    } 
});

当然,我们可以做得更好,编写一个泛型函数,它也不需要step-N类:

代码语言:javascript
复制
var rotatedElements = $(".step");
$(".nav-right a").click(function() {
    var cur = rotatedElements.filter(".active");
    cur.removeClass("active");
    var index = rotatedElements.index(cur) + 1;
    if (index >= rotatedElements.length)
        index = 0;
    rotatedElements.eq(index).addClass("active");
});
票数 3
EN

Stack Overflow用户

发布于 2012-12-07 03:07:05

正如theScientist注释中所建议的那样,您应该只使用一个事件处理程序。

代码语言:javascript
复制
$(".nav-right a").click(function() {
    if( $(".step-1").is('.active') ) {alert('1');
      $(".step-1").removeClass("active");
      $(".step-2").addClass("active");
      return;                                 
    }
     if( $(".step-2").is(".active") ) {alert('2');
      $(".step-2").removeClass("active");
      $(".step-3").addClass("active");   return;        
    } 
      if( $(".step-3").is(".active") ) {alert('3');
      $(".step-3").removeClass("active");
      $(".step-1").addClass("active");   return;       
    } 
});
票数 1
EN

Stack Overflow用户

发布于 2012-12-07 03:21:41

在这里,它位于一个处理程序中,并且尽可能简洁:

代码语言:javascript
复制
$(".nav-right a").click(function() {
    var $steps = $(".step"),
        index = $steps.filter('.active').removeClass("active").index();
    $steps.eq((index + 1) % $steps.length).addClass('active');
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13756205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档