如果忽略条件 JQuery

if ignores the condition JQuery

本文关键字:JQuery 条件 如果      更新时间:2023-09-26

我正在尝试设置一个只能单击一次的div,但是我的if一直忽略了条件,我真的不知道为什么。

$(document).ready(function() {
  var defaultState = true;
  if (defaultState) {
    defaultState = false;
    $("#element").click(function() {
    //Do stuff to elements
  }
});

我尝试用不同的方式解决它。我希望这个条件只用另一个div的上下文填充一个div,但只有一次。所以我尝试将条件设置为这样:if($("#element").html().length === 0)我什至在控制台上检查了我的条件值,即使它是 5000,显然不再是 0,它一直忽略我的条件并进入 if。

绑定单击处理程序后,它就会被绑定。从那时起,直到您取消绑定它,将始终触发该处理程序。

听起来one()就是您要找的:

$('#element').one('click', function() {
   //...
});

这只会触发一次。

事件处理程序在 document.ready 运行后,第一次就已附加。

你可以只使用 jQuery .one() 事件处理程序。jQuery .one() 文档

$("#element").one('click', function() {
    //Do stuff to elements
});
$(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;
    }
});

添加事件侦听器后$("#element").click(function() {它将绑定到该元素。但是你可以做些什么来把你的if放在点击函数中,并在if内给你的标志变量false优点是您可以再次给变量true,然后单击将"再次"运行。

$(document).ready(function () {
    var defaultState = true;
    $("#element").click(function () {
        if (defaultState) {
            defaultState = false;
            //Do stuff to elements
        } else {
            return false;
        }
    });
});