2011-01-08 17 views
3

多分私の質問は少し一般的に聞こえるかもしれません。特定の要素がクリックされたかどうかを確認する方法はありますか?

私はぼかしで隠されている別のdivに置き換えられるテキストエリアを持っています。具体的には、上のテキストエリアにはマークダウンコードが含まれており、divにはこのコードの解析バージョンが含まれています。

ここでは、テキストエリアの上に書式設定ツールバーを追加しようとしていますが、もちろんクリックすると、ブラーイベントが発生し、テキストエリアが非表示になります。

私の質問は、ツールバーがクリックされたときにのみぼかしのデフォルトの動作を防止することが可能かどうか、もしそうなら、どうするのが最善の方法です。お時間を

どうもありがとう:)

+0

はいまたはいいえで回答したい場合は、可能です。誰かがツールバーをクリックしたときに、テキストボックスのonBlurプロパティを変更するだけです。 –

+0

フィードバックいただきありがとうございます。たぶん、私はどのように尋ねたのでしょうか?それはまさに私が知る必要があるものなので。私がまだ学んでいるように、その方向へのポインタは高く評価されており、私は宿題をしたいと思っています。ありがとう:) – finferflu

答えて

1

編集:私の以前のソリューションはのは、何か他のものを試してみましょうので、それをカットしていませんでした。私は実際にdocumentclickイベントをバインドするのが嫌いですが、あなたがWYSIWYGエディタのようなものをコーディングしているように思われるので、この場合は最適なソリューションかもしれません。代わりに.oneを使用するように調整することができます。

$(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(); 
    } 
}); 

jsFiddleで試すことができます。

+0

あなたは彼に、同じもののためのjquryメソッドがあるとき、デフォルトのdomメソッドを使うように勧めますか? つまり、document.activeElement – Baz1nga

+0

@ user350374の代わりにjquerys focusメソッドを使用し、私の例ではなく '.focus'メソッドを使用する方法はありますか? ':focus'フィルタがないので、document.activeElementを使用します。 – mekwall

+0

あなたの答えをありがとう。私は両方の提案をテストしましたが、私が理解しているように、activeElementメソッドはinputまたはtextarea要素の場合にのみ特定の要素を返します(そうでなければ私の場合のようにボディを返します)、blurイベントはinputおよびtextarea要素同じように。 – finferflu

関連する問題