Jquery,如果它是第一次点击元素

时间:2011-01-14 05:20:33

标签: javascript jquery click each var

我需要我的脚本在第一次单击元素时执行某些操作,并在点击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

我觉得它应该依赖变量,但是我想不出如何从这里更新变量,任何帮助都会很棒。

6 个答案:

答案 0 :(得分:11)

看一下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/

答案 1 :(得分:9)

使用data使用元素保存您的状态。

在您的点击处理程序中

使用

  

$(本)。数据( 'NUMBER_OF_CLICKS')

检索值和

  

$(本)。数据( 'NUMBER_OF_CLICKS',SOME_VALUE)

设置它。

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

编辑:固定链接

答案 2 :(得分:1)

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

e.g。

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);
});

答案 3 :(得分: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});

DocumentationCanIUse

答案 4 :(得分:0)

如果你只需要固定行为序列,你可以这样做:

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

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

答案 5 :(得分:0)

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

这会将click事件绑定到Corresponding Html元素,并在第一次事件渲染后自动解除绑定。

或者你也可以:

$( “#foo” 的)。结合( '点击',函数(){

//一些活动

$( “#foo” 的)解除绑定( “点击”)。 //将它绑定到其他一些事件处理程序。

});