我想使用jQuery显示/隐藏表的列。重新加载页面后,显示的表选择应与之前相同。因此,表的每一列都有其自己的类。
如何获取隐藏元素的类?



<thead>
  <th class="apple" style="display:none"> Apple</th>
  <th class="orange"> Orange</th>
  <th class="banana"> Banana</th>
  <th class="ananas" style="display:none"> Ananas</th>
</thead>





以下选择不起作用。



$(document).ready(function(){
  $("#hide_apple").click(function(){
    //change visibility for apple-column

    //this doesn't work:
    var myClasses = document.getElementsByTagName('th');
      alert(myList[0].style.visibility);
      for (var i = 0; i < myClasses.length; i++) {
	    if (myClasses[i].style.visibility === 'hidden') {
	      alert(myClasses[i].className);
          //save class name in cookie..
        }
      }
  }
}





我保存在cookie中的类的名称。
感谢帮助!

最佳答案

您使用的是visibility而不是display

if (myClasses[i].style.visibility === 'hidden')


更改为:

if (myClasses[i].style.display === 'none') {


此外,由于您已经在使用jQuery,因此整个循环可以更改为以下内容:

$(document).ready(function() {
  $('th:hidden').each(function() {
    alert($(this).attr('class'));
  });
});




$(document).ready(function() {
  $('th:hidden').each(function() {
    alert($(this).attr('class'));
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <thead>
    <th class="apple" style="display:none"> Apple</th>
    <th class="orange"> Orange</th>
    <th class="banana"> Banana</th>
    <th class="ananas" style="display:none"> Ananas</th>
  </thead>
</table>





该循环将在所有隐藏的th上运行(您当然可以根据需要将选择器更改为更具体的选择),并警告该类。

09-25 18:42
查看更多