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
函数绑定一个函数(或者绑定处理程序的任何位置),并在该函数中绑定要为所有后续运行的第二个函数点击使用bind
或click
。
例如
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