2011-01-08 7 views
3

Vielleicht klingt meine Frage etwas generisch, also lassen Sie mich klarer werden.Gibt es eine Möglichkeit zu überprüfen, ob ein bestimmtes Element angeklickt wurde?

Ich habe ein Textfeld, das auf Unschärfe versteckt ist, durch ein anderes div ersetzt werden. Um genauer zu sein, das obige Textfeld enthält Markdown-Code, und das Div enthält die geparste Version dieses Codes.

Jetzt versuche ich eine Formatierungssymbolleiste über dem Textarea hinzuzufügen, aber natürlich, wenn ich darauf klicke, wird das Unschärfeereignis ausgelöst und die Textfläche wird ausgeblendet, was überhaupt nicht praktisch ist.

Also meine Frage ist, ob es überhaupt möglich ist, das Standardverhalten Unschärfe nur zu verhindern, wenn die Symbolleiste angeklickt wird, und wenn ja, was ist der beste Weg, dies zu tun.

Vielen Dank für Ihre Zeit :)

+0

Wenn Sie nur mit Ja oder Nein antworten möchten, dann ist JA möglich. Sie müssen nur die Eigenschaft onBlur der Textbox ändern, wenn jemand auf die Symbolleiste klickt. –

+0

Danke für die Rückmeldung. Vielleicht hätte ich auch fragen sollen wie? Denn genau das muss ich wissen. Irgendein Zeiger in diese Richtung wird geschätzt, weil ich noch lerne und ich bereit bin, meine Hausaufgaben zu machen. Danke :) – finferflu

Antwort

1

Edit: Meine bisherigen Lösungen haben schneiden nicht, dass es mit etwas anderem so lassen versuchen. Ich mag es nicht, das Ereignis documentclick zu binden, aber in diesem Fall könnte es die beste Lösung sein, da es scheint, dass Sie eine Art WYSIWYG-Editor programmieren. Sie können es möglicherweise zwicken, stattdessen .one zu verwenden.

$(document).click(function(e){ 
    if ($(e.target).closest("#container").length == 0) { 
     // Target that was clicked is not inside the container, so we can hide or replace the textarea 
     $("textarea").hide(); 
    } 
}); 

Sie können dies unter jsFiddle ausprobieren.

+0

Warum würden Sie ihm vorschlagen, eine Standard-Dom-Methode zu verwenden, wenn es eine jqury-Methode für das gleiche gibt. , d. H. Verwende jquerys focus method anstelle von document.activeElement – Baz1nga

+0

@ user350374, und wie würde man die '.focus' Methode anstelle meines Beispiels verwenden? Ich benutze document.activeElement, weil es keinen ': focus' Filter gibt. – mekwall

+0

Danke für Ihre Antwort. Ich habe beide Vorschläge getestet, aber wie ich weiß, gibt die Methode activeElement nur ein bestimmtes Element zurück, wenn es ein Eingabe- oder Textfeldelement ist (andernfalls gibt es den Körper wie in meinem Fall zurück), und das Unschärfeereignis kann nur an Eingabe- und Textbereichselemente gebunden werden auch. – finferflu

Verwandte Themen