javascript - 使用 if 语句检查变量 true

标签 javascript jquery jquery-plugins if-statement

这是我的代码:

$(val1).mouseleave(function () {
    flag = false;
    $(val3 + "," + val4).mouseenter(function () {

        flag = true;
        //alert(flag);

    });
    if (flag == true) {
        //alert("if"+flag);
        $(".big" + i + j + "boxer").show();
        $(".big" + i + "box").show();
        $(".big" + i + "box").append('<div class="opacity" style="background-color:rgba(00,00,00,0.77);position:absolute;top:0;right:0;left:0;bottom:0;"></div>')
        $(".small" + i + "box").append('<div class="opacity" style="background-color:rgba(00,00,00,0.77);position:absolute;top:0;right:0;left:0;bottom:0;"></div>')

    } else {
        //alert("else"+flag);
        $('.opacity').remove();
        $(val2).hide();
        $(val3).show();

    }
});

它不满足 flag = true 条件。如果我在 $(val1).mouseleave(function(){});alert,它显示 flag = true;但是当我在 $(val1).mouseleave(function(){}); 之外提醒它时,它显示 flag = false

好吧,让我解释一下:我有 4 个 block val1,val2,val3val4。当用户离开 val1 并进入 val3val4 block 时,我想 set/add opacity class 。 .. 如果他们不进入 val3/val4进入 val2 或另一个 block block 那么我想要删除不透明度类。

最佳答案

在进行 if 测试时:

if(flag==true)

...flag始终 为 false,因为您在此之前将其设置为 false。它唯一设置为 true 的地方是在您绑定(bind)的 mouseenter 处理程序内部,但此时不会调用该处理程序函数。

让我在您的代码的开头添加一些注释,以尝试使其更清晰:

$(val1).mouseleave(function () {
    flag = false;                                  // set flag to false
    $(val3 + "," + val4).mouseenter(function () {  // bind a mouseenter
        flag = true;                               // that won't be called immediately
        //alert(flag);                             // so won't change flag yet
    });
    if (flag == true) {                            // flag is still false

mouseleave 处理程序内部绑定(bind) mouseenter 处理程序没有意义,因为这意味着每次发生 mouseleave 时,您都会绑定(bind)一个额外的 mouseenter 相同元素的处理程序。

我真的不能建议一个具体的解决方案,因为你还没有解释你想要达到的效果。 (但我可能会先将 mouseenter 代码移到其他地方。)

关于javascript - 使用 if 语句检查变量 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424352/

相关文章:

javascript - 正式输入字段验证

javascript - 如何在页面重新加载时保留 Jquery 函数

jquery - 视差 float 图像 <div>

当通过 ajax 引入链接时,jquery colorbox 插件会中断

javascript - 如何使用 NPM 中不可用的外部库或 react/webpack 中的 bower?

javascript - 将 eventListener 附加到 Javascript 中的动态元素

jquery检查单个元素的有效性

jQuery json/html 模板渲染插件

javascript - jQuery 文件上传 - 如何识别所有文件何时上传

javascript - 将状态发布到 firebase