根据屏幕大小更改转换类型

时间:2016-04-08 19:20:17

标签: javascript jquery html css

基本上代码应该做什么 - 如果网站大小超过750像素,那么下拉列表会随着悬停效果向下滑动,但如果小于750像素的下拉列表可以点击切换。

我检查媒体查询是否已更改(大于750px float == left)和if(小于750 px float == none) 如果我以650像素的网页宽度开始,它可以点击切换,但是当我将其调整为全屏然后返回到650像素时,它显示为悬停和点击切换不仅在点击切换上。

任何人都可以解释我做错了什么?我对jquery很新。

提前致谢!

$(document).ready(function() {
    checkSize();
    $(window).resize(checkSize);
});

//Function to the css rule
function checkSize() {
    if ($("#drop > li").css("float") == "none") {
        $('#dropdown-btn').click(function() {
            $('.dropdown').slideToggle(200);

        });
    } else if ($("#drop > li").css("float") == "left") {
        $('#dropdown-btn').hover(
            function() {
                $('.dropdown').slideDown(200);




            },
            function() {
                $('.dropdown').slideUp(200);


            }

        );
    }
}; 

1 个答案:

答案 0 :(得分:0)

我认为你的问题是这样的事实,你的checkSize函数每次触发时都会绑定一个事件,这在调整大小时非常重要。更好的方法是摆脱你的resize函数,并在事件中使用if语句,如下所示:

$(document).ready(function() {

    $('#dropdown-btn').on('click',function() {
      if($("#drop > li").css("float") == "none"))
        $('.dropdown').slideToggle(200);
    });

    $('#dropdown-btn').on({
      mouseenter: function () {
        //stuff to do on mouse enter
        if ($("#drop > li").css("float") == "left")
          $('.dropdown').slideDown(200);
      },
      mouseleave: function () {
        //stuff to do on mouse leave
        if ($("#drop > li").css("float") == "left")
          $('.dropdown').slideUp(200);
      }
});

您还应该使用jQuerys on()功能代替hover()click()

参考:http://api.jquery.com/on/