我正在尝试设置一个只能被点击一次的div,但我的if会一直忽略这个条件,我真的不知道为什么。
$(document).ready(function() {
var defaultState = true;
if (defaultState) {
defaultState = false;
$("#element").click(function() {
//Do stuff to elements
}
});
我尝试用不同的方式解决它。我希望这个条件只用一个上下文填充一个div,但只有一个时间。所以我尝试了这样的条件:if($("#element").html().length === 0)
我甚至用控制台检查了我的病情值,即使它是5000,显然不再是0,它一直忽略我的状况并进入了if
答案 0 :(得分:2)
绑定点击处理程序后,它就被绑定了。从那时起,直到你取消绑定它,该处理程序将始终被触发。
听起来one()
就像你要找的那样:
$('#element').one('click', function() {
//...
});
这只会触发一次。
答案 1 :(得分:1)
事件处理程序已经在document.ready运行之后第一次连接。
您可以使用jQuery .one()
事件处理程序。
jQuery .one() documentation
$("#element").one('click', function() {
//Do stuff to elements
});
答案 2 :(得分:1)
$(document).ready(function() {
$("#element").one('click', function() {
//Do stuff to elements
});
});
或强> 的
$("#element").on('click', function(){
//Do what you want
});
//Later in your code
$("#element").off('click');
如果你开始使用标志变量,你也可以这样做:
$(document).ready(function() {
var defaultState = true;
$("#element").click(function(e) {
if (defaultState) {
//Do what you want
}
defaultState = false;
}
});
答案 3 :(得分:0)
添加事件监听器$("#element").click(function() {
后,它将与该元素绑定。 但是您可以将if
置于click函数中,并在false
内部将if
提供给您的flag变量。
优点您可以再次提供变量true
,然后点击将再次“运行”。
$(document).ready(function () {
var defaultState = true;
$("#element").click(function () {
if (defaultState) {
defaultState = false;
//Do stuff to elements
} else {
return false;
}
});
});