我有这个简单的javascript函数:
<script type="text/javascript">
var popup = '0';
if(popup == '0') {
$(document).ready(function () {
$(document).on('click', '.button', function(){
alert('test');
popup = '1';
});
});
}
</script>
<button class="button">Test</button>
我希望该功能仅在第一次点击时发出提醒但是它仍在继续工作,尽管我将popup
的值更改为1
答案 0 :(得分:9)
您需要的是.one()
功能。它确保代码只为您触发一次。
文档示例:
$( "#foo" ).one( "click", function() {
alert( "This will be displayed only once." );
});
答案 1 :(得分:5)
编写代码如下:
<script type="text/javascript">
var popup = '0';
$(document).ready(function () {
$(document).on('click', '.button', function(){
if(popup == '0') {
alert('test');
popup = '1';
}
});
});
</script>
设置了单击侦听器后,之前的if语句的位置不再执行。只有点击功能中的代码。
或者,您可以取消绑定onClick侦听器,而不是设置popup = '1'
。请尝试以下方法:
<script type="text/javascript">
var popup = '0';
$(document).ready(function () {
$(document).on('click', '.button', function(){
alert('test');
//unbinds *all* listeners previously registered on "document"
$(document).unbind('click');
});
});
</script>
更清洁,正如Mathletics所提到的,从内存中清除不必要的回调。
答案 2 :(得分:1)
尝试:
<script type="text/javascript">
var popup = '0';
$(document).ready(function () {
$(document).on('click', '.button', function(){
if(popup == '0') {
alert('test');
}
popup = '1';
});
});
</script>
你有一个将弹出窗口设置为1的功能但从未再次检查其值。这样就可以检查它并且应该正常工作。