2010-11-01 3 views
0

Как выбрать все дочерние элементы в пределах определенного <div>, за исключением активного? Например:Проблема с выбором jquery

<div> 
    <a id="1" class="item" href="#">Item 1 </a> 
    <a id="2" class="item" href="#">Item 2 </a> 
    <a id="3" class="item" href="#">Item 3 </a> 
</div> 

<script> 
$(function() { 
    $(".item").mouseover(function() { 


     // HOW TO hide all the items with class item except this one 


    }); 
}); 

ответ

1

Вы можете использовать .not() исключить this (текущий элемент), например:

$(function() { 
    $(".item").mouseover(function() { 
     $(".item").not(this).hide(); 
    }); 
}); 

Или, если они всегда братья используют .siblings(), как это:

$(function() { 
    $(".item").mouseover(function() { 
     $(".item").siblings().hide(); 
    }); 
}); 
+0

Хороший лорд, я обыграл @Nick Craver (почти с тем же ответом) целым * 17 секунд * O_O Хотя, по общему признанию, моя вариация не работала, так что от этого отнимает часть радости ... =/ –

+0

@David. В ответ вы получите некоторые очень странные ошибки, 'this' не является строкой, это элемент DOM. –

+0

Действительно, см. Мой (отредактированный) комментарий выше. Curses –

1
$('.item').not($(this).show()).hide(); 
+0

lol i сделал тот же ответ =) удалил его, хотя – Breezer

+0

Нет необходимости обертывать 'this' или' .show() 'it ... если бы он не был * уже * видимым, мы не могли бы замалчивается над ним. –

0

Подумайте об этом по-другому ... Скрыть все, а затем показать мне:

$(function() { 
    $(".item").mouseover(function() { 

     // Hide all: 
     $('.item').hide(); 

     // Show "me": 
     $(this).show(); 


    }); 
}); 
0

Вы можете использовать селектор $(this) для исключения элемента при наведении мыши.

Смежные вопросы