Jquery + CSS根据视口宽度

时间:2016-07-18 05:25:19

标签: javascript jquery html css

如果有人可以就我的问题提出建议,我会很感激。 我在JSFiddle

上的代码

我有几个类别的模型列表和相应的值。我有一个显示此数据的简单表。但是,我需要在视口宽度为<=640 px时更改表结构,以便仅显示1个类别并使其可单击,以便值可以更改。

调整屏幕大小时出现问题。当我的屏幕尺寸为<=640 px并且我点击类别(值正在改变)并调整回大屏幕尺寸时,我的表格应该再次显示所有值。如果你能帮我解决一些问题,我将不胜感激。

JS:

$('a.cashback-btn').click(function(event) {
  if ($(this).hasClass('active')) {
    $('.cashback-block .cash-table').slideUp('fast');
    $(this).find('i').removeClass("fa-chevron-up");
    $(this).find('i').addClass("fa-chevron-down");
    $(this).removeClass('active');
  } else {
    $('.cashback-block .cash-table').slideDown('fast');
    $(this).find('i').removeClass("fa-chevron-down");
    $(this).find('i').addClass("fa-chevron-up");
    $(this).addClass('active');
    $('html, body').animate({
      scrollTop: $('a.cashback-btn').offset().top
    }, 1000);
  }
});

var medalsCnt = 1; // 1-3, 4-6, 7-10, >10
var medalsMsg = "1-3 category";
$('.cash-table th.mobile').click(function() {
  medalsCnt++;
  $('.cashback-block table td:not(:first-child)').hide();
  if (medalsCnt == 2) {
    medalsMsg = "4-6 category";
    $('.cashback-block table td:nth-child(3)').show();
  } else if (medalsCnt == 3) {
    medalsMsg = "7-10 category";
    $('.cashback-block table td:nth-child(4)').show();
  } else if (medalsCnt == 4) {
    medalsMsg = "more 10 category";
    $('.cashback-block table td:nth-child(5)').show();
  }
  if (medalsCnt > 4) {
    medalsCnt = 1;
    medalsMsg = "1-3 category";
    $('.cashback-block table td:nth-child(2)').show();
  }
  $(this).find('span').text(medalsMsg);
});

更新

$( window ).resize(function () {
     if($('.mobile-version').is(":visible")){
        return; //need to show/hide only one column based on category selected
     }
     else{
        $('.cashback-block table td').show(); //works ok, but now mobile version is not working
     }
  });

3 个答案:

答案 0 :(得分:1)

var wW = $(window).width();
if(wW <= 640){
    // get tr that you want to be clickable
    // add event click
        // run code
}

使用来自css的媒体查询来更改表格的样式。隐藏您不想显示的所有表格行。

答案 1 :(得分:0)

我建议你检查窗口宽度,并使用另一个变量来绑定事件一次。如果你不检查这个,那么当你调整宽度小于640像素时,同样的事件将被附加到元素上。

age(as.Date(i))

答案 2 :(得分:0)

在代码中添加以下更改,以便它可以正常工作。

$(window).resize(function(ev) {
    console.log(ev);
    if ($('.mobile-version').is(":visible")) {
        return; //need to show/hide only one column based on category selected
    } else {
    }
          if($(window).width()<=640){
            $('.cashback-block table td:not(:first-child)').hide();
            $('.cashback-block table td:nth-child('+(medalsCnt+1)+')').show(); //works ok, but now mobile version is not working                
        }else{
            $('.cashback-block table td').show();
        }
});

JS小提琴为此https://jsfiddle.net/nepovx0e/7/