2014-06-06 13 views
5

Ich suche nach einer Möglichkeit, alle Elemente außer einem Element und seinem Nachkommen auszuwählen, die möglicherweise Kinder/Enkel oder noch mehr haben. Was ich genau tun wollen ist so etwas wie ...Auswahl aller Elemente außer einem und seinen Kindern/Enkelkindern

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

dies alle touchmove Ereignis außer foo Klasse deaktivieren würde und seine Kinder. Aber leider weiß ich nicht, wie viele Generationen es hätte, weil der Code, den ich bin schreiben würde in vielen Vorlagen Datei verwendet werden, so dass sie vielleicht keine Kinder haben oder vielleicht haben sie 10 Generationen Familie.

Gibt es eine Möglichkeit, dies zu erreichen? anders als neue Dev/Span zu machen, um alle anderen außer denjenigen zu wickeln, die ich nicht auswählen möchte. (Diese Lösung würde aus irgendeinem Grund wirklich lange dauern.)

Jeder Vorschlag oder Empfehlung wäre willkommen.

+0

Ihr Code scheint gut zu funktionieren: http://jsfiddle.net/amUf2/ –

+0

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

Antwort

1

Ihr Code tut genau das, was Sie wollen:

JSFiddle example

Sie es versucht haben? Ich habe ein kleines Beispiel mit Hover gemacht, um es sichtbar zu machen + Ich habe nur div's und p's ausgewählt, um es einfacher zu machen, aber es wird auch mit allen Elementen funktionieren.

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

Es funktioniert, weil jeder Nachkomme die Klassen seiner Vorfahren erbt. In meinem Beispiel können Sie sehen, dass das tiefste Div die gesamte Klasse fooX hat (1 < X < 6).

Siehe eine andere visible example, sobald ich foo3 eine neue Hintergrundfarbe geben, werden alle inneren Foos die gleiche Hintergrundfarbe haben.

+0

der Punkt, den ich Stapel hatte, scheint wie der Teil von $ ("* "), Ich habe es bereits getestet und der Code, den ich geschrieben habe, funktioniert nicht richtig. Benötige ich ein bestimmtes Tag für den ersten Selektor? – suish

+0

Nein, siehe hier: http://jsfiddle.net/amUf2/10/. Wieder habe ich alle Körper Nachkommen ausgewählt, um es einfacher mit dem Hintergrundeffekt zu machen. –

+0

funktioniert immer noch nicht, Titelfrage wurde gelöst. Vielen Dank für Ihre Antwort. – suish

Verwandte Themen