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

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

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

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

使用数据来保持元素的状态。

在您的点击处理程序中

使用

$(本)。数据( ‘NUMBER_OF_CLICKS’)

检索值和

$(本)。数据( ‘NUMBER_OF_CLICKS’,SOME_VALUE)

设置它。

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

编辑:固定链接

另一个替代方案可能是拥有两个函数,并使用$(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); }); 

如果您只需要固定行为序列,则可以执行以下操作:

$(’selector’)。toggle(function(){…},function(){…},function(){…},…);

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

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

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

或者你也可以:

$( “#富”)。绑定( ‘点击’,函数(){

//一些活动

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

});

这在香草Js中非常容易。 这是使用适当的,不同的点击处理程序

 const onNextTimes = function(e) { // Do this after all but first click }; node.addEventListener("click", function onFirstTime(e) { node.addEventListener("click", onNextTimes); }, {once : true}); 

文档 , CanIUse