2014-06-06 21 views
5

Szukam sposobu na wybranie wszystkich elementów z wyjątkiem jednego elementu i jego potomka, które może mieć dzieci/wnuki lub nawet więcej. Co dokładnie chcesz zrobić coś takiego jak ...Wybieranie wszystkich elementów oprócz jednego i jego dzieci/wnuków

$("*").not(".foo, .foo *").bind("touchmove",function(e){ 
    e.preventDefault(); 
}); 

byłoby wyłączyć wszystkie zdarzenia z wyjątkiem footouchmove klasy i jej dzieci. Ale niestety nie wiem, ile miałoby to pokoleń, ponieważ kod, który mam zamiar napisać o , byłby wykorzystywany w wielu plikach szablonów, aby nie miały dzieci, a może mają rodzinę 10 pokoleń.

Czy jest jakiś sposób, aby to osiągnąć? poza tworzeniem nowego dev/span, aby owinąć wszystkich, oprócz tego, którego nie chcę wybrać. (Z jakiegoś powodu to rozwiązanie zajmie naprawdę dużo czasu.)

każda sugestia lub zalecenie będą mile widziane.

+0

Twój kod wydaje się działać poprawnie: http://jsfiddle.net/amUf2/ –

+0

http://jsfiddle.net/arunpjohny/3rd2w/2/ –

Odpowiedz

1

Twój kod robi dokładnie to, co chcesz:

JSFiddle example

Czy to próbował? Zrobiłem mały przykład ze wskaźnikiem myszy, aby go pokazać + Wybrałem tylko div i p, aby było łatwiej, ale będzie działać również z wszystkimi elementami.

$("div,p").not(".foo, .foo *").hover(function(){ 
    $(this).css("background", "#70A5C9"); 
},function(){ 
    $(this).css("background", "#ffffff"); 
}); 

Działa, ponieważ każdy potomek dziedziczy klasy swoich przodków. W moim przykładzie widać, że najgłębszy div będzie miał całą klasę fooX (1 < X < 6).

Zobacz inny visible example, kiedy nadaję foo3 nowy kolor tła, wszystkie wewnętrzne foos będą miały ten sam kolor tła.

+0

punkt, w którym mam stos, wydaje się być częścią $ ("* "), Już testowałem i kod, który napisałem nie działa poprawnie. Czy używam konkretnego tagu dla pierwszego selektora? – suish

+0

Nie, zobacz tutaj: http://jsfiddle.net/amUf2/10/ .Again, wybrałem wszystkich potomków ciała, aby ułatwić to z efektem tła. –

+0

nadal nie działa, pytanie o tytuł zostało rozwiązane. dzięki za odpowiedź – suish

Powiązane problemy