Есть ли способ проверить, имеет ли div такой же класс, как у предка в jQuery? - PullRequest
2 голосов
/ 17 мая 2010

Я хочу динамически выделить вкладку, если она представляет текущую страницу. У меня есть:

<style>
 #tabs li{bg-color: white;}
 body.Page1 #tabs .Page1,
 body.Page2 #tabs .Page2,
 body.Page3 #tabs .Page3{bg-color: orange;}
</style>
<body class="Page1 ADifferentClass">
 <ul id="tabs">
  <li class="Page1 SomeClass">
  <li class="Page2 SomeOtherClass">
  <li class="Page3 AnotherClass">
 </ul>
</body>

Как видите, для каждой вкладки должен быть CSS, поэтому добавление другой страницы включает в себя изменение как HTML, так и CSS. Есть ли простой (СУХОЙ) способ проверить, есть ли у двух div один и тот же класс, уже встроенный в jQuery?

Я в конечном итоге пошел с этим:

<script>
$(document).ready(function(){
  var classRE = /Page\d+/i;
  var pageType = $('body').attr('className').match(classRE);
  $('li.'+pageType).addClass('Highlight');
});
</script>
<style>
  #tabs li{bg-color: white;}
  #tabs li.Highlight{bg-color: orange;}
</style>

Ответы [ 2 ]

2 голосов
/ 17 мая 2010

Как насчет наличия двух общих классов "Highlight" и "Normal".

<style> 
 #tabs li{bg-color: white;} 
 body.Page1 #tabs .Page1, 
 body.Page2 #tabs .Page2, 
 body.Page3 #tabs .Page3{bg-color: orange;} 
</style> 
<body class="Page1 ADifferentClass"> 
 <ul id="tabs"> 
  <li class="Highlight"> 
  <li class="Normal"> 
  <li class="Normal"> 
 </ul> 
</body> 
1 голос
/ 17 мая 2010

Вы можете проверить родителей () длина:

if ($('#myElement').parents('.myClass').length > 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...