Jquery: если класс существует в элементе скрыть элемент - PullRequest
0 голосов
/ 08 ноября 2011
if( ('.container').closest('.item7') = true){

     hide THE container of item7.

     //----
     //need help with this line
     //something like $closest('.item7').('.container').hide();
     //----

}

Резюме:

если в контейнере существует класс item7, скрыть контейнер.

Ответы [ 4 ]

1 голос
/ 08 ноября 2011

Не совсем понятно, что вы пытаетесь сделать, но после прочтения вашего вопроса несколько раз я думаю, что вам нужна логика, подобная этой.Если у объекта .container есть объект где-либо с классом .item7, то скрыть родительский объект .container.Если это то, что вы действительно пытаетесь сделать, вы можете сделать это следующим образом:

$('.container .item7').closest('.container').hide();

Это найдет любые .item7 объекты, которые находятся в .container, а затем скроет ближайший .containerродительский объект каждого совпадения.

Если есть .container, который не содержит .item7, он не будет затронут.Если есть .item7, которого нет в .container, он не будет затронут.

Если может быть несколько уровней контейнеров, и вы хотите скрыть их все, вы можете сделать это следующим образом:

$('.container .item7').parents('.container').hide();

Это находит все .item7 объект и затем скрывает любых .container родителей.

Мой предпочтительный способ сделать это на самом деле это.Это было бы более эффективно, если бы было всего несколько .container объектов, но много .item7 объектов:

$('.container').has('item7').hide();

Это говорит о том, чтобы найти каждый .container объект.Затем в этом результирующем объекте jQuery (из всех .container объектов) удалите любой .container объект, у которого нет потомка .item7, а затем скройте напоминающие .container объекты.

1 голос
/ 08 ноября 2011

Если у вас есть больше контейнеров, вы должны зациклить их:)

$('.container').each( function() {
  if( $(this).find('.item7').length ){
        $(this).hide();
  }
});
1 голос
/ 08 ноября 2011

просто:

   $('.container').each (function () {

if ($(this).has('.item7').length>0 ){

      $(this).hide();

    }

})
0 голосов
/ 08 ноября 2011
$('.item7').each(function() {
    $(this).parents('.container').hide();
});

Вот скрипка, показывающая, как она работает> http://jsfiddle.net/ULZGH/

...