Javascript 如何以较小的宽度运行jQuery函数?

Javascript 如何以较小的宽度运行jQuery函数?,javascript,jquery,Javascript,Jquery,我想在一个较小的屏幕宽度做一些事情,但我有一个问题。我正在创建一个响应的导航栏,所以我想在小宽度时显示一个按钮&切换菜单。但是当我以较小的宽度隐藏菜单时,它不会以较大的宽度显示菜单,因为隐藏在jQuery中 所以我想让jQuery代码以较小的宽度运行,我写了以下内容,但它不起作用: $(window).resize(function() { if($(window).width() < '48em') { $('.ji-toggle-btn').click(func

我想在一个较小的屏幕宽度做一些事情,但我有一个问题。我正在创建一个响应的导航栏,所以我想在小宽度时显示一个按钮&切换菜单。但是当我以较小的宽度隐藏菜单时,它不会以较大的宽度显示菜单,因为隐藏在jQuery中

所以我想让jQuery代码以较小的宽度运行,我写了以下内容,但它不起作用:

$(window).resize(function() {
    if($(window).width() < '48em') {
        $('.ji-toggle-btn').click(function() {
            $(this).parent().find('ul').toggle();
        });                 
    }
});
$(窗口)。调整大小(函数(){
如果($(窗口).width()<'48em'){
$('.ji切换btn')。单击(函数(){
$(this.parent().find('ul').toggle();
});                 
}
});
$(window).width()返回一个int(以像素为单位的屏幕宽度)。为了在ems中获得该值,您需要将该值除以购买正文的字体大小,然后将其与“48”而不是“48em”进行比较。例如:

$(window).resize(function() {
    if(($(window).width() / parseFloat($("body").css("font-size"))) < 48) {
        //  Do stuff here...              
    }
});
$(窗口)。调整大小(函数(){
if($(window.width()/parseFloat($(“body”).css(“font size”)))<48){
//在这里做事。。。
}
});
$(window).width()返回一个int(以像素为单位的屏幕宽度)。为了在ems中获得该值,您需要将该值除以购买正文的字体大小,然后将其与“48”而不是“48em”进行比较。例如:

$(window).resize(function() {
    if(($(window).width() / parseFloat($("body").css("font-size"))) < 48) {
        //  Do stuff here...              
    }
});
$(窗口)。调整大小(函数(){
if($(window.width()/parseFloat($(“body”).css(“font size”)))<48){
//在这里做事。。。
}
});

显示/隐藏按钮的正确方法是使用CSS中的媒体查询:

.css
示例:

.ji-toggle-btn {
  display: none;
}    

@media (min-width: 48em) {
  .ji-toggle-btn {
    display: block;
  }
}
.ji-toggle-btn {
  display: none;

  @media (min-width: 48em) {
    display: block;
  }
}
.scss
示例:

.ji-toggle-btn {
  display: none;
}    

@media (min-width: 48em) {
  .ji-toggle-btn {
    display: block;
  }
}
.ji-toggle-btn {
  display: none;

  @media (min-width: 48em) {
    display: block;
  }
}
我模拟了一个如何制作响应侧边栏的示例:


在本例中,您会注意到JS的使用是多么少。针对
.toggle
类并使用css转换将使您达到您想要的目的。您对JS的这种方法考虑太多了。

显示/隐藏按钮的正确方法是使用CSS中的媒体查询:

.css
示例:

.ji-toggle-btn {
  display: none;
}    

@media (min-width: 48em) {
  .ji-toggle-btn {
    display: block;
  }
}
.ji-toggle-btn {
  display: none;

  @media (min-width: 48em) {
    display: block;
  }
}
.scss
示例:

.ji-toggle-btn {
  display: none;
}    

@media (min-width: 48em) {
  .ji-toggle-btn {
    display: block;
  }
}
.ji-toggle-btn {
  display: none;

  @media (min-width: 48em) {
    display: block;
  }
}
我模拟了一个如何制作响应侧边栏的示例:


在本例中,您会注意到JS的使用是多么少。针对
.toggle
类并使用css转换将使您达到您想要的目的。您对JS的这种方法考虑太多了。

您的问题是,您正在以较小的分辨率分配行为。实际上,仅当窗口大小小于48 em时,才需要分配单击事件

使用简单的文字-只需删除单击事件:

$(window).resize(function() {
    if($(window).width() < '48em') {
        $('.ji-toggle-btn').parent().find('ul').toggle();
    }
});
$(窗口)。调整大小(函数(){
如果($(窗口).width()<'48em'){
$('.ji toggle btn').parent().find('ul').toggle();
}
});

编辑我同意上面那个家伙关于CSS的观点。这些事情基本上应该通过媒体查询来完成。

您的问题是,您正在以较小的分辨率分配行为。实际上,仅当窗口大小小于48 em时,才需要分配单击事件

使用简单的文字-只需删除单击事件:

$(window).resize(function() {
    if($(window).width() < '48em') {
        $('.ji-toggle-btn').parent().find('ul').toggle();
    }
});
$(窗口)。调整大小(函数(){
如果($(窗口).width()<'48em'){
$('.ji toggle btn').parent().find('ul').toggle();
}
});

编辑我同意上面那个家伙关于CSS的观点。这些事情基本上应该通过媒体查询来完成。

使用@media querys或bootstrap。我想你没有明白我的问题……;)是的,我有你的问题。您可以为按钮而不是菜单项编写代码,这样您就可以在小屏幕上看到它。但后来你意识到,在更大的屏幕上,按钮也会出现。相反,您希望在大屏幕上显示菜单项。我说的对吗?不,Vishal,我的问题不在CSS…,我已经创建了导航栏。。。所以我在屏幕小于400px的时候放了一个按钮来打开和关闭导航栏。。。但当我在那个尺寸时,我点击按钮隐藏菜单,它不会在更宽的400px中显示导航栏,因为它已经隐藏在jQuery中了…,所以我想运行jQuery代码,例如400px-to在更宽的屏幕中不起作用…使用@media-querys或bootstrap。我想你没有明白我的问题…;)是的,我有你的问题。您可以为按钮而不是菜单项编写代码,这样您就可以在小屏幕上看到它。但后来你意识到,在更大的屏幕上,按钮也会出现。相反,您希望在大屏幕上显示菜单项。我说的对吗?不,Vishal,我的问题不在CSS…,我已经创建了导航栏。。。所以我在屏幕小于400px的时候放了一个按钮来打开和关闭导航栏。。。但当我在那个尺寸时,我点击按钮隐藏菜单,它不会在更宽的400px中显示导航栏,因为它已经隐藏在jQuery中了…,所以我想运行jQuery代码,例如400px-to在更宽的屏幕中不起作用…我想你也没有明白我的问题…;)看看我链接到的例子——我想它会帮你找到你需要去的地方。你不需要太多的JS——想想换一个类吧。我想你也没有明白我的问题…;)看看我链接到的例子——我想它会帮你找到你需要去的地方。您不需要太多的JS—请考虑切换一个类。这就是你想要实现的吗?在你的测试中,我的问题就在这里…,缩小屏幕并单击按钮隐藏导航栏,然后使屏幕变宽,它不会显示导航栏…,这就是我想要的。。。这就是你想要实现的吗?在你的测试中,我的问题就在这里…,缩小屏幕并单击按钮隐藏导航栏,然后使屏幕变宽,它不会显示导航栏…,这就是我想要的。。。