jquery, если у div нет ни одного addclass для родительского класса - PullRequest
3 голосов
/ 16 февраля 2011

Я хочу добавить класс в div с классом 'catresults', если у divов ниже него с классом 'finement_category_item' есть стиль = "display: none".

 <div class="refinement_category_section">
    <div class="find_by_category_text">
      <div class="catresults">By Category</div>
    </div>
    <div class="refinement_category_item" style="display: none"> <a onclick="Add_Search_Param('cat', '2847'); Refine();" href="javascript: void(0);" class="refinement_category_link"> <span class="refinement_category_text">Back Bar Coolers (61)</span> </a> </div>



   $(document).ready(function(){
  if($(".refinement_category_item").not(":visible")){
  $(".refinement_category_item").parent().find("div.catresults").addClass('backgroundfilter');
  }
});

Ответы [ 5 ]

7 голосов
/ 16 февраля 2011
var div = $('.refinement_category_item');

if ( ! div.is(':visible')) {
   div.parent().addClass('backgroundfilter');
}

Некоторые заметки ...

  • this устанавливается jQuery - не устанавливается конструкцией if.
  • Использование is(':visible') - это способ jQuery.
  • При добавлении класса с addClass() вы не ставите туда ведущий ..
  • Обычно лучше использовать готовый DOM $(function() { ... }), чем помещать свои сценарии в линию под элементами DOM.
2 голосов
/ 16 февраля 2011
$(".refinement_category_item:hidden").prev()
                           .children('.catresults').addClass('backgroundfilter');
1 голос
/ 16 февраля 2011

Вы используете $(this), когда код не знает, что такое $(this). Вы должны использовать $(".refinement_category_item") там же.

Также $(".refinement_category_item").css('display')== 'none' также может быть $(".refinement_category_item").is(':hidden')

0 голосов
/ 16 февраля 2011

Я бы более склонен сделать что-то подобное.Непроверенный код, но принципы обоснованы.

HTML:

<div class="refinement_category_section">
    <div class="find_by_category_text">
      <div class="catresults">By Category</div>
    </div>
    <div class="refinement_category_item"> <a onclick="Add_Search_Param('cat', '2847'); Refine();" href="javascript: void(0);" class="refinement_category_link"> <span class="refinement_category_text">Back Bar Coolers (61)</span> </a> </div>

JS:

<script>
$(document).ready(function(){
    if($(".refinement_category_item").not(":visible")) {
        $(this).parent().addClass(".backgroundfilter");
    }
});
</script>
0 голосов
/ 16 февраля 2011

Попробуйте это:

$(document).ready(function(){
  if($(".refinement_category_item").is(":visible")){
  $(".refinement_category_item").parent().find("div.catresults").addClass('.backgroundfilter');
  }
});
...