2014-03-06 257 views
1

如何只能执行一次该函数? 我试图.one,但它不工作jQuery只能运行一次onclick函数

$('a.inspire-tag').on('click',function() {   
    $('html, body').animate({ 
     scrollTop: $(".button-inspire").offset().top 
    }, 400); 
}); 
+1

'。一()'处理程序执行每人事件类型元素最多一次。你有多个元素''a.inspire-tag'' – Satpal

+1

什么是“不起作用”是什么意思? – adeneo

+0

你有没有在你的点击函数里试过$(this).off()? –

回答

0
var oneTime = true; 
$('a.inspire-tag').on('click',function() {   
    if(oneTime) { 
     $('html, body').animate({ 
      scrollTop: $(".button-inspire").offset().top 
     }, 400); 
     oneTime = false; 
    } 
}); 
+0

谢谢,完美的作品。 – osterello

+0

@carambly,是的,这是可行的,但我们可以在Jquery中使用关闭或一个 – Rex

+0

@Reexly,正如我所看到的!我不知道关闭(),也在这里学习 – caramba

2
$('a.inspire-tag').on('click',doThis); 
function doThis() {   
    $('html, body').animate({ 
     scrollTop: $(".button-inspire").offset().top 
    }, 400); 
    //you can off all on callback function 
    $('a.inspire-tag').off('click',doThis); 
} 
+0

当您将它作为点击处理程序提交时,您当然希望'doThis'没有parens'()',否则该函数将被当场调用。 –

+0

对,谢谢,编辑 – Nephelococcygia

0
var inspiretag = $('a.inspire-tag'); 
inspiretag.on('click',function() {   
    $('html, body').animate({ 
     scrollTop: $(".button-inspire").offset().top 
    }, 400); 
inspiretag.off('click'); 
}); 

http://api.jquery.com/off/

1

使用.off(),与间隔名event names

$('a.inspire-tag').on('click.myevent', function() { 
    if (...) 
    // remove current event handler 
    $(this).off('click.myevent') 
}); 
2

如果你想要做的只是点击一次即可启用

试试这个:

$('a.inspire-tag').on('click',function() {   
    $('html, body').animate({ 
     scrollTop: $(".button-inspire").offset().top 
    }, 400); 
    $('a.inspire-tag').off('click'); 

});