2011-01-13 4 views
1

Ich habe ein Menü, das bei Mouse over Attr Klasse hinzufügen wird. Wenn eine ausgewählte Registerkarte ausgewählt wurde und die Seite neu geladen wurde, hat sieremove attr nur, wenn mit jquery gemacht wurde

ich möchte, dass auf der Maus ich die hinzugefügte Klasse nur entfernen kann, wenn es die war, die ich gerade hinzugefügt habe und nicht die eine, die mit der Seite geladen wurde - wie kann ich?

Antwort

2

Mehrere Möglichkeiten, dies zu tun. Eine Möglichkeit ist die Verwendung von Daten.

$("whatever").mouseover(function(){ 
    if (!$(this).hasClass("someClass")) { 
    $(this).addClass("someClass").data("addedByMe",true); 
    } 
}); 

$("whatever").mouseout(function(){ 
    if ($(this).data("addedByMe") == true){ 
     $(this).removeClass("someClass"); 
    } 
}); 
0

Ich würde vorschlagen, zwei calss Namen (zB selected und focused). Wenn Sie eine Registerkarte ausgewählt haben, fügen Sie die Klasse selected hinzu. Das Mouse Over und Out-Ereignis ändert nur die Klasse focused.

Sie könnten sowohl selected als auch focused auf die gleiche CSS-Regel setzen oder nicht, wenn Sie möchten.

$(".menu-item").mouseover(function() { 
    $(this).addClass("focused"); 
    // or if you don't want the effect affect the selected item, use the following: 
    // if(!$(this).hasClass("selected")) { $(this).addClass("focused"); } 
}).mouseout(function() { 
    $(this).removeClass("focused"); 
}); 
0

Sie können eine Variable beim Laden der Seite festlegen.

var isClassAppliedAtLoad = false; 

if ($("#yourelement").hasClass("yourclassname")) { 
    isClassAppliedAtLoad = true; 
} 

und in Ihrem mouseover-Ereignis können Sie die Variable überprüfen.