使用jQuery的.one事件处理程序在第一次点击时进行设置,在下一次/后续点击时进行其他操作,是否可以更优雅地编写:
$('#start').one('click', function(){
alert('one');
// could also be .on for subsequent clicks
$(this).one('click', function(){
alert('two');
});
});
更新:我希望有一个使用.one的jQuery模式 像这样self-defining function, 但是阅读the source for .one()它只是.on()
的扩展答案 0 :(得分:1)
var clickIndex = 0;
$('#start').on('click', function(){
alert(++clickIndex);
});
您可以在此处放置switch
语句或if
块,以根据用户点击的次数运行不同的代码。如果.one
侦听器取消绑定对您而言很重要,只需在.off
表示您已完成绑定时使用clickIndex
。
答案 1 :(得分:0)
我认为在这种情况下你可以使用数据属性或类并使用click事件:
$('#start').on('click', function(){
if (!$(this).data('clicked')) {
alert('one');
$(this).data('clicked', 'true');
}
else {
alert('more than one');
}
});
或与班级:
$('#start').on('click', function(){
if (!$(this).hasClass('clicked')) {
alert('one');
$(this).addClass('clicked');
}
else {
alert('more than one');
}
});
答案 2 :(得分:0)
也许是这样的:
$('#start').on('click', function(){
var click = $(this).data('clicked')?$(this).data('clicked'):1;
alert(click);
if(click === 2)
$(this).off('click')
else $(this).data('clicked',++click);
});