2012-01-19 7 views
7

以下は私のコードです。 #preview divの背景色を変更したいのですが、常に#previewを選択できません。スクリプトが実行されても存在しないようです。他のjQueryスクリプトは後でそれを作成します。まだ存在しない要素を選択する方法(jQuery)とそのスタイルを変更するには?

jQuery("#panel").mouseleave(function(){ 
    var good_color = jQuery('.colorpicker_hex input').val(); 
    jQuery("#preview").css({ 'background-color': good_color }); 
}); 

現在および将来の#preview divをすべて選択し、背景色を変更するにはどうすればよいですか?私はlive()のようなものがあると思いますが、CSSの変更例はまだ見つかりませんでした。

答えて

7

jQueryには、特にあなたがリストしたことをすることは何もありません。適用されるすべてのスタイルのルールと同様に

$("<style>#preview { background-color: #eee; }</style>") 
    .appendTo(document.documentElement); 

を、どの要素がそれに一致した場合:あなたは、しかし、それを行うにはstyle要素を追加することができます。ドキュメント要素の最後に追加すると、スタイルの競合が発生します(具体的な違いはありませんが、idセレクタはかなり特殊です)。

Live example - テスト済みとChrome、Firefoxの、オペラ、IE6、およびIE9での作業は、(あなたの代わりにon()を使用する必要がありますので、今、推奨されません)

1

live()だけのイベント用です。まだ存在しない要素を選択する方法はありません。ただし、次のような要素を作成することができます。

var previewDiv = $('<div id="#preview" />'); 

このdivはまだドキュメントには添付されていません。あなたが喜ばとしてあなたは、そのCSSを操作することができます。

previewDiv.css({ 'background-color': good_color }); 

その後だけではなく、それを添付することができ、スクリプトを作成するための、以前に担当したスクリプト:

previewDiv.appendTo(parentElement); 
2

あなたがすることはできません。基本的に、jQueryはDOMツリーを介して適切なオブジェクトを選択します。
したがって、ドキュメントが読み込まれた後にスクリプトを実行してください。

$(document).ready(function() { 
    jQuery("#panel").mouseleave(function(){ 
     var good_color = jQuery('.colorpicker_hex input').val(); 
     jQuery("#preview").css({ 'background-color': good_color }); 
    }); 
}); 

#panelまたは#previewは、あなたの場合には存在しない可能性があります。

関連する問題