【问题标题】:Jquery if its the first time element is being clickedJquery,如果它的第一次元素被点击
【发布时间】:2011-06-08 23:04:13
【问题描述】:

我需要我的脚本在第一次单击元素时执行某些操作,并在单击 2、3、4 时继续执行不同的操作,依此类推

$('selector').click(function() {  
//I would realy like this variable to be updated  
var click = 0;  
    if (click === 0) {  
        do this  
        var click = 1;  
    } else {  
        do this  
    }
});//end click

真的我认为它应该依赖于变量,但我想不出如何从这里更新变量,任何帮助都会很棒。

【问题讨论】:

  • 有人应该编辑您的帖子,以便代码正确缩进,而不是全部在一行上。
  • 我发誓是这样,但我可能做错了什么,它说缩进 4 个空格????

标签: javascript jquery click each var


【解决方案1】:

这在原版 Js 中非常简单。这是使用正确的不同点击处理程序

const onNextTimes = function(e) {
    // Do this after all but first click
};

node.addEventListener("click", function onFirstTime(e) {
    node.addEventListener("click", onNextTimes);
}, {once : true});

Documentation, CanIUse

【讨论】:

    【解决方案2】:

    $('#foo').one('click', function() { alert('这只会显示一次。'); });

    这会将点击事件绑定到相应的 Html 元素一次,并在第一次事件呈现后自动取消绑定。

    或者你也可以:

    $("#foo").bind('click',function(){

    // 一些活动

    $("#foo").unbind("click"); // 将其绑定到其他事件处理程序。

    });

    【讨论】:

      【解决方案3】:

      另一种选择可能是拥有两个函数,并使用$(document).ready() 中的one 函数绑定一个函数(或绑定处理程序的任何位置),然后在该函数中绑定第二个函数以供所有后续运行点击使用bindclick

      例如

      function FirstTime(element) {
         // do stuff the first time round here
         $(element.target).click(AllOtherTimes);
      }
      
      function AllOtherTimes(element) {
         // do stuff all subsequent times here
      }
      
      $(function() {
          $('selector').one('click', FirstTime);
      });
      

      【讨论】:

        【解决方案4】:

        如果您只需要一系列固定行为,您可以这样做:

        $('selector').toggle(function(){...}, function(){...}, function(){...},...);

        toggle 方法中的事件处理程序将被有序调用。

        【讨论】:

        • 你有参考吗? ....哦,是的,它在文档中..api.jquery.com/toggle-event..不知道你可以有两个以上...有趣的是:)
        【解决方案5】:

        看看 jQuery 的 .data() 方法。考虑你的例子:

        $('selector').click(function() {
            var $this = $(this),
                clickNum = $this.data('clickNum');
        
            if (!clickNum) clickNum = 1;
        
            alert(clickNum);
        
            $this.data('clickNum', ++clickNum);
        });
        

        在此处查看一个工作示例:http://jsfiddle.net/uaaft/

        【讨论】:

        • 这不是完全“错误”...但感谢您提供更好的链接。
        • 我在帖子中犯了完全相同的错误
        • 是的,这肯定会起作用,感谢您提供的链接,我测试了它,这是测试代码的好网站!!
        【解决方案6】:

        使用data 将您的状态与元素保持一致。

        在您的点击处理程序中,

        使用

        $(this).data('number_of_clicks')

        检索值和

        $(this).data('number_of_clicks',some_value)

        设置它。

        注意:$(this).data('number_of_clicks') 如果尚未设置,将返回 false

        编辑:固定链接

        【讨论】:

          猜你喜欢
          • 2021-05-03
          • 2012-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多