javascript - JQuery if 语句未按预期工作

标签 javascript jquery twitter-bootstrap-3

我正在使用 Bootstrap 3 并使用 JQuery 创建一个 if 语句,以使我的导航栏在单击正文上的任何内容时折叠,但仅当浏览器宽度小于 992px 时才折叠。当浏览器为 992px 或更宽时,我希望忽略此功能。我下面的函数按预期工作,除了以下事实:当在所有浏览器宽度上单击主体时,“测试”会记录到控制台,而只有在小于 992 像素时才应该这样做。我下面的 if 语句有问题吗?

if ($(window).width() < 992) {
    $('body').click(function() {
        console.log("test");
        $('.navbar-collapse').collapse('hide');
    });
};

我更新了代码,在函数内部包含 if 语句,如下所示。它仍然可以正常工作,并且仅在正确的浏览器宽度上将“测试”记录到控制台,但我想知道这是否是一个不好的方法,因为即使我不这样做,浏览器也会在每次单击时检查其宽度想要它。这是一种不好的做事方式吗?尝试让我发布的第一个代码正常工作是更好的做法吗?

$('body').click(function() {
    if ($(window).width() < 992) {
        console.log("test");
        $('.navbar-collapse').collapse('hide');
    };    
}); 

最佳答案

第二种方法是可行的方法。如果代码块最初执行时宽度小于 992,第一个只会绑定(bind) click 事件。

如果用户在做出绑定(bind)/不绑定(bind)的初始决定后调整浏览器大小怎么办?这就是为什么您需要检查每次点击的宽度。

关于javascript - JQuery if 语句未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858805/

相关文章:

javascript - 在您的 Ebay 列表中使用 JavaScript/JSON 将用户选择的选项发回给您

javascript - 如何删除 JavaScript RowDataPacket 数组中的重复数据

javascript - 有没有办法阻止 `&lt;script&gt;' 在 PHP/Javascript/HTML 中加载相同的 javascript 两次?

javascript - 同时使用 $(this) 和 addClass/removeClass 显示/隐藏底部导航栏的内容

javascript - jQuery 不隐藏 div

jquery getJSON 和 $.each 循环遍历未链接到父索引的子数组

html - 包含引导 CDN 链接很重要吗?

javascript - 悬停在 jquery ui <a href ="javascript: submitform()">Country</a> 中不起作用

css - 带有长文本的 Bootstrap 高度容器

css - 没有数据时删除下拉内容