javascript - 如何重新开始循环javascript循环

标签 javascript jquery html css toggle

我不知道如何使标题更清晰,尽管问题本身对我来说似乎足够清楚。

我一直在使用这个 jQuery 插件:

http://felix-kling.de/blog/2011/04/14/jQuery-Function-Toggle-plugin/

弥补 jQuery 中已弃用并删除的切换功能。

然后我有以下功能:

<script>
$( document ).ready(function() {
    $("span.letra").funcToggle('click',     
        function() {$(this).addClass("ex1");},
        function() {$(this).removeClass("ex1").addClass("ex2")},
        function() {$(this).removeClass("ex2").addClass("ex3")},
        function() {$(this).removeClass("ex3")}
    );
});
</script>

我使用类是因为我将此逻辑应用于许多元素,尽管我只希望被单击的元素在每次单击时都经历一次循环。

每个类都会向元素添加不同的背景颜色。

现在,在元素后面有一个“全部清理”按钮,它将删除每个元素的每个类,将它们全部返回到“未单击”状态。

<script>
$( document ).ready(function() {
    $("span.limpar").click(     
        function() {$("span.letra").removeClass("ex1 ex2 ex3");}
    );
});
</script>

现在,正如您在上面看到的,这个按钮的作用是删除任何元素可能具有的每个类。

现在解决我的问题:

假设我单击一个元素两次。最后,单击的元素应用了“ex2”类。

现在假设我点击了“全部清理”按钮,激活了上面的第二个脚本。它删除了我之前通过点击应用到它的“ex2”类。

现在,如果我再次单击同一元素,该单击将像第三次单击一样进行,从而激活 funcToggle 脚本中的第三个函数。

我想要的代码不仅可以清除所有相关元素中的类,还可以重新启动 funcToggle 脚本,以便对已单击元素的任何单击都将注册为该序列中的第一次单击。

最佳答案

也许您使用 funcToggle 还有另一个原因,但对于这项特定的工作来说,它似乎更多的是一种障碍,而不是帮助。

这是另一种方法。

$('span.letra').on('click', function() {
  var $this = $(this);
  if($this.is('.ex1,.ex2,.ex3')) {
    $this.filter('.ex3').toggleClass('ex3');
    $this.filter('.ex2').toggleClass('ex2 ex3');
    $this.filter('.ex1').toggleClass('ex1 ex2');
  }else{
    $this.toggleClass('ex1');
  }
});

将状态存储在一个地方(例如元素上的一组类)通常比尝试保持多个系统同步更能保持理智。

也就是说,如果你想要减少重复,你可以这样做:

$('span.letrb').on('click', function() {
  var $this = $(this);
  var ex = (1 + parseInt($this.data('ex') || 0)) % 4;
  $this.data('ex', ex);
  $this.removeClass('ex1 ex2 ex3');
  if (ex > 0) {
    $this.addClass('ex'+ex);
  }
});

这要求您记住同时重置数据和类:

$('span.letrb').removeClass('ex1 ex2 ex3').data('ex', 0);

关于javascript - 如何重新开始循环javascript循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401084/

相关文章:

javascript - 如何改进 JSON 数据的显示

javascript - 按下按钮时更改 li 元素类,并在该 css 类中更改背景颜色

PHP 生成的 javascript 未执行

javascript - 工厂数据来得太晚——Angular.js

Javascript jQuery 调用 API 来填充表,但接收到特定对象调用的未定义信息

JQuery:鼠标移动事件?

javascript - Modernizr.mq 在 Safari 和多个事件触发器中不起作用?

javascript - 如何从 .t​​xt 文件中读取数据并将数据转换为整数?

javascript - Bootstrap 3 在移动设备上按菜单动画方向滑动

javascript - jQuery 按钮一次验证表单的一部分