注册jQuery点击,第一次和第二次点击
有没有办法运行两个类似于此的函数:
$('.myClass').click( function() { // First click }, function() { // Second click } );
我想使用基本的切换事件,但不推荐使用.toggle()
。
试试这个:
$('.myClass').click(function() { var clicks = $(this).data('clicks'); if (clicks) { // odd clicks } else { // even clicks } $(this).data("clicks", !clicks); });
这是基于一个已经回答的问题: 支持eventData的jQuery的.toggle()方法的替代方案?
或这个 :
var clicks = 0; $('.myClass').click(function() { if (clicks == 0){ // first click } else{ // second click } ++clicks; });
我为我的菜单工作了
var SubMenuH = $('.subBoxHederMenu').height(); var clicks = 0; $('.btn-menu').click(function(){ if(clicks == 0){ $('.headerMenu').animate({height:SubMenuH}); clicks++; console.log("abierto"); }else{ $('.headerMenu').animate({height:"55px"}); clicks--; console.log("cerrado"); } console.log(clicks); });
我不知道你在尝试做什么,但我们可以得到基本的切换
$('.myClass').click({ var $this=$(this); if($this.is(':hidden')) { $this.show('slow'); }else{ $this.hide('slow'); } })
注意:这适用于该元素的无限点击事件..不仅仅是两次点击(如果这是你想要的)
或者您可以使用css类隐藏/显示div并使用jquery.toggleClass()
在下面提到的方法中,我们将一组函数传递给我们的自定义.toggleClick()
函数。 我们使用HTML5
data-*
属性来存储将在下一次点击事件处理过程中执行的函数的索引。 存储在data-index
属性中的该值在每次迭代中更新,以便我们可以跟踪在下一次迭代中要执行的函数的索引。
所有这些函数将在每次单击事件的迭代中逐个执行。 例如,在第一次迭代中,将执行index[0]
处的函数,在第二次迭代中,将执行存储在index[1]
处的函数,依此类推。
在您的情况下,您只能将2个函数传递给此数组。 但是这种方法不仅限于2种function。 您可以在此数组中传递3,4,5或更多函数,它们将在不对代码进行任何更改的情况下执行。
下面的代码段中的示例是处理四个函数。 您可以根据自己的需要传递function。
$.fn.toggleClick = function(funcArray) { return this.click(function() { var elem = $(this); var index = elem.data('index') || 0; funcArray[index](); elem.data('index', (index + 1) % funcArray.length); }); }; $('.btn').toggleClick([ function() { alert('From Function 1'); }, function() { alert('From Function 2'); }, function() { alert('From Function 3'); }, function() { alert('From Function 4'); } ]);
var click_s=0; $('#show_pass').click(function(){ if(click_s % 2 == 0){ $('#pwd').attr('type','text'); $(this).html('Hide'); } else{ $('#pwd').attr('type','password'); $(this).html('Show'); } click_s++; });
When You click the selector it automatically triggers second and waiting for another click event. $(selector).click(function(e){ e.preventDefault(); // prevent from Posting or page loading //do your stuff for first click; $(this).click(function(e){ e.preventDefault();// prevent from Posting or page loading // do your stuff for second click; }); });
我希望这对你有帮助..
如果你只想要第一次和第二次点击:
$('.myClass').one( 'click', function() { // First click $('.myClass').one( 'click', function() { // Second click }); );