首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery + CSS根据视口宽度大小显示/隐藏表元素

Jquery + CSS根据视口宽度大小显示/隐藏表元素
EN

Stack Overflow用户
提问于 2016-07-18 05:25:19
回答 3查看 406关注 0票数 0

如果有人能就我的问题提出建议,我将不胜感激。我在JSFiddle上的代码

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

当我调整屏幕大小时,我的问题就会发生。当我的屏幕大小是<=640 px,我点击类别(值正在改变)并调整大小回到更大的屏幕大小,我的表应该再次显示所有的值。如果您能帮助我修复jquery,我将不胜感激。

JS:

代码语言:javascript
复制
$('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);
});

更新

代码语言:javascript
复制
$( 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
     }
  });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-18 07:04:38

希望在代码中添加以下更改,这样它就能工作了。

代码语言:javascript
复制
$(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 Fiddle为https://jsfiddle.net/nepovx0e/7/

票数 0
EN

Stack Overflow用户

发布于 2016-07-18 05:29:05

代码语言:javascript
复制
var wW = $(window).width();
if(wW <= 640){
    // get tr that you want to be clickable
    // add event click
        // run code
}

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

票数 1
EN

Stack Overflow用户

发布于 2016-07-18 06:29:13

我建议您检查窗口宽度,并使用另一个变量绑定事件一次。如果不检查此值,则相同的事件将与调整小于640 px的宽度的次数一样多地附加到元素。

代码语言:javascript
复制
var eventBind == false
if ($(window).width() <= 640 && eventBind == false) 
    { 
     // now bind your event here.
     eventBind  = true;
}   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38429122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档