2011-06-27 13 views
0

2つのjQueryダイアログを使用して、フォーカスを取得または紛失したときにタイトルバーの色を変更する機能を備えた単純なページを作成しようとしています。言い換えれば、フォーカスされたウインドウは、異なるタイトルバーの色を持ちます。 私はこのコードを持っている:jQuery Dialogのタイトルバーのスタイルを変更しました。


$(function() { 
    $(".window").dialog({ 
    focus: function (event, ui) { 
     $(this).parents(".ui-dialog:first").find(".ui-dialog-titlebar").addClass("ui-state-error"); 
    } 
}); 

をしかし、私はそれを取得またはlostsが集中しているかどうかフォーカスイベントで検出する方法がわかりません。

答えて

1

は、私は同じことを必要とし、このソリューションが動作します。この

http://jsfiddle.net/JqQA6/

を試してみてfocusin()focusout()

+0

いいえ、私のコードでは動作しません(少なくともフィドルで)http://jsfiddle.net/mplungjan/8NYV9/ – mplungjan

+0

クリックするとdiv要素がフォーカスをトリガーしないようです。クリックで結果を取得しますが、そのクラスでjQダイアログのタイトルバーを選択することができませんでした。 これは問題なく機能しました。 http://jsfiddle.net/8NYV9/2/ あなたがクラスを変更したい要素だけを選択できるのであれば、これは私が推測するような仕事をするはずです。 – TheDeadLike

+0

おかしい、 "私は" .clickに変更しよう "とコメントを削除しました;) – mplungjan

3

を試してみてください。

+0

シンプルでエレガントなソリューション! –

1

ダイアログfocusイベントはフォーカス取得時にのみ呼び出されます。 Stock jQueryのUIダイアログボックスには、フォーカスを失うという概念はありません。

簡単な解決策は、単にfocusハンドラでからすべてのダイアログをあなたのui-state-errorクラスを削除してから、ちょうど焦点を受けています1に、それを追加することです。

私は実際にダイアログボックスに.blurイベントを追加するフル機能のjQuery UIプラグインを作成し、一番上のボックスが閉じられるたびに積み重ねられたボックスの並べ替えを処理します。私はそれを公開することが許可されているかどうかを確認します。