如何触发单击事件以跳过下一次单击

时间:2018-01-12 14:47:52

标签: jquery triggers

我有一个下一个按钮和上一个按钮,当活动变量为1时我想跳过下一步2并直接进入步骤3.为了达到这个目的,我使用了触发功能。这是我的代码:

    var active = -1;

jQuery('.next').click(function(event){
    if (active < 0) // make sure you only set active value one time
        active = jQuery('ul#checkout_timeline').find('li.active').data('step');
        alert(active);
    if(active == '1')
    {   
        active = 0//prevent active being set to 1 again. 
        jQuery(".next").trigger("click");
        // console.log(active);
        active = jQuery('ul#checkout_timeline').find('li.active').data('step')+1;
        return false;
    }

这是完美的工作我有一个类似的prev按钮,我尝试使用相同的代码,以便当它到达第3步和下一个&#34; PREV&#34;按钮单击它应跳过一步并转到步骤1.

jQuery('.prev').click(function(event){
    var active = -1;
    if (active < 0) // make sure you only set active value one time
    {
        active = jQuery('ul#checkout_timeline').find('li.active').data('step');
        alert(active);
    if(active == '3')
    {   
        active = 0//prevent active being set to 1 again. 
        jQuery(".prev").trigger("click");
        // console.log(active);
        active = jQuery('ul#checkout_timeline').find('li.active').data('step');
        return false;
    }
}
});

但是这里警报值继续按下prev按钮返回值3。那是做错了什么。

2 个答案:

答案 0 :(得分:1)

您需要找到一种方法来重置活动值,然后再次触发click事件,否则最终会获得无限循环。

你可以试试的东西:

var active = -1;

jQuery('.next').click(function(event){
    if (active < 0) // make sure you only set active value one time
        active = jQuery('ul#checkout_timeline').find('li.active').data('step');
    if(active == '1')
    {
        active = 0 //prevent active being set to 1 again. 
        jQuery(".next").trigger("click");
        return false;
    }

});

答案 1 :(得分:0)

设置&#39;有效&#39;循环外的变量很重要。

然后,如果您发现

,则可以切换它
var active = 0;
jQuery('.next').click(function(event){
    active =  jQuery('ul#checkout_timeline').find('li.active').data('step');
    if(active == '1')
    {
        active = 0; // depending on step 3, you may not need this
        // do something to go to step 3 (which is NOT jQuery(".next").trigger("click"); as that causes the infinite loop and error message)
        return false;
    }
    // do whatever step 2 is
});

如果没有更清晰的代码示例,则无法提供帮助,尽管这样可以摆脱无限循环并一遍又一遍地工作。