【问题标题】:jquery && operator doesn't workjquery && 运算符不起作用
【发布时间】:2014-12-19 10:49:42
【问题描述】:

我对以下代码有疑问。 用于切换 div 的按钮。 在切换 div 中,还有一些其他 div 和其他元素。

$(function () {
    $('#btn').click(function (e) {
        e.preventDefault();
        console.log('clicked toggle');
        $('#Popover').toggle();
        if ($('#Popover:visible').length == 0) {
            $('#Popover').hide();
        } else {
            $('#Popover').show();
        }
    });
});

$(document).on('click', function (e) {
    var container = $('#Popover');
    var trigger = $('#btn');

    if (($(e.target).closest(trigger).length === 0) && ($(e.target).closest(container).length === 0)) {
        container.hide();
    }
});

按钮切换 div 效果很好。当我在按钮/togglediv 外部单击时,togglediv 会隐藏。

问题是当点击切换 div 内的 div 时,该 div 也会隐藏。

似乎 && 运算符不起作用或我的代码有其他问题。

可能是回发问题 以下代码是切换 div 内的 div (div id="hourInc") 的 onclick 方法

 $('#hourInc').click(function (e) {
        e.preventDefault();
        var hour = $('#cn_TimeHour').val();
        if (hour < 12) {
            hour = (hour * 1) + 1;
        }
        else {
            hour = 0;
        }
        $('#cn_TimeHour').val(("0" + hour).slice(-2));
        setTime();
    });

【问题讨论】:

  • &amp;&amp; 运算符根本与 jQuery 无关。条件有问题。尝试一一调试。
  • 你能提供完整的 html 问题演示吗?
  • 提供相关的 HTML 标记。

标签: javascript jquery operators toggle show-hide


【解决方案1】:

“==”的作用与“===”略有不同。

标识 (===) 运算符的行为与相等 (==) 运算符相同,只是不进行类型转换,并且类型必须相同才能被视为相等。

参考:Javascript 教程:比较运算符

== 运算符将在进行任何必要的类型转换后比较是否相等。 === 运算符不会进行转换,因此如果两个值的类型不同,=== 将简单地返回 false。在这种情况下,=== 会更快,并且可能返回与 == 不同的结果。在所有其他情况下,性能将相同。

【讨论】:

  • 为什么? .length 返回一个数字
  • 如果 .length 属性在 javascript 中,如果它们是不同的类型会很奇怪。
【解决方案2】:

感谢您的反馈

点击事件所在的问题。 我在这些方法的底部插入了 return false。

这似乎行得通

【讨论】:

    猜你喜欢
    • 2022-06-21
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2018-04-27
    • 2018-04-26
    • 2016-05-01
    • 1970-01-01
    相关资源
    最近更新 更多