Diese Frage ähnelt meiner vorherigen Frage, Klickaktion auf fokussiertem DIV, aber diesmal geht es hauptsächlich darum, wie das Auslösen des Fokusereignisses verhindert werden kann, wenn ich eines der DIVs anklicke. Letztes Mal hatte ich ein div mit tabindex='-1', um es anklickbar zu machen, jetzt habe ich eine Liste von divs mit tabindex>0, damit sie auch durch Tabulatoren den Fokus erhalten können.
Div eins
Div zwei
Div drei
Div vier
einige Styles:
div {
Höhe: 20px;
Breite: 60%;
Rand: solide 1px blau;
Textausrichtung: Zentrum;
}
div:focus {
Rand: solide 2px rot;
Umrandung: keiner;
}
Jetzt benutze ich ein Flag (Aktion), um eine Aktion (Alert) auszulösen, wenn ich das Div zum zweiten Mal anklicke, und mit nur einem Klick, wenn es bereits fokussiert ist, z.B. mit einer Tab-Taste.
var aktion = false;
$('div')
.klicken(function(e){
e.stopImmediatePropagation();
if(aktion){alert('aktion');}
aktion = true;})
.fokus(function(){aktion = true;})
.unscharf(function(){aktion = false;});
Das Problem bei dem obigen Code ist, dass das Fokus-Ereignis ausgelöst wird, was bedeutet, dass stopImmediatePropagation nicht wie erwartet funktioniert. Die Zwei-Klick-Aktion funktioniert, wenn die Fokusereigniszeile auskommentiert wird, aber Sie müssen dennoch zweimal klicken, wenn das Div durch Tabulatoren den Fokus erhält. Hier ist das Beispiel: http://jsfiddle.net/3MTQK/1/