2009-06-24 2 views
1

ich auf alle Elemente auf der Seite der Maus über Ereignis hinzufügen möchten, außer denen der Klasse „no_inspect“ hat,Wie füge ich ein Ereignis für alle Elemente hinzu, die eine bestimmte Klasse haben?

ich dieses Event hinzufügen möchten, nachdem alle Seitenelemente laden, habe ich versucht, es so zu schreiben:

$('*:not(.no_inspect)').mouseover(MouseOverEvent); 

aber es funktioniert nicht, Nähte etwas verpasst.

UPDATE Problem Mittel:

Die Veranstaltung auf alle Elemente auf der Seite angebracht „haben no_inspect Klasse oder haben nicht“, was nicht das Verhalten ich will.

UPDATE MouseOverEvent Code:

function DIOnMouseOver(evt) { 
    element = evt.target; 

    // set the border around the element 
    element.style.borderWidth = '2px'; 
    element.style.borderStyle = 'solid'; 
    element.style.borderColor = '#f00'; 
} 
+0

Was meinen Sie mit "nicht funktioniert"? Erhalten Sie einen Fehler? Feuert das Event einfach nicht ab? Wird das Ereignis den falschen Elementen zugewiesen? –

Antwort

2

Die mouseover Ereignis Blasen versuchen. Versuchen Sie mouseenter stattdessen.

Auch, warum wenden Sie die Stile auf evt.target? Warum nicht "das"?

function DIOnMouseOver(evt) { 
    $(this).css({ 
     border: '2px solid #f00' 
    }); 
} 

Wie Matchu erwähnt (in den Kommentaren), eine andere Art und Weise Ausbreitung zu vermeiden, ist event.stopPropagation() in Ihren Event-Handler zu rufen.

+1

Or tack evt.stopPropagation() auf das Ende Ihrer Funktion. – Matchu

+0

sehr seltsam, als ich zu Mouseenter statt Mouseover wechselte, funktionierte es sehr gut. Weißt du, warum mouseover nicht funktionierte? Ich dachte, Maus ist das richtige Ereignis in meinem Fall. –

0

Der Code, den Sie arbeiten geschrieben sollten, sind Sie sicher, dass das Mouseover-Ereignis nicht für ein Element, das die Zündung einer wickelt Sie über sind mousing?

Verwenden Sie die neueste und beste Version von JQuery. Ich weiß, dass ältere Versionen einen Klassen-Bug im Nicht-Selektor hatten.

Sie möchten

$('*').not('.no_inspect').mouseover(MouseOverEvent); 
+0

hinzugefügt den Mouseover-Event-Code in der Frage –

Verwandte Themen