2012-03-07 11 views
0

クラスが存在するかどうかを検出しようとしています。存在する場合は、別の要素の背景属性を設定します。これは私が持っているものですが、うまくいきません。IDにクラスがある場合、別の要素の属性を設定してください

if(jQuery("#slider-banner").hasClass('living-nutrients')) 
    { 
     jQuery("#home-middle-first").css("background-image","[path to new background image]"); 
    } 

ところで - これはいつでもID「スライダー・バナー」の変化を検出するために私の次のステップですが、これまでのところ、私もそれがページのロードに一度動作させることはできません。どんな助けでも大歓迎です...ありがとう!

EDIT:指示通りに.attrから.cssに変更されました。意味がある...しかし、まだ働いていない。 IF文の中にconsole.logメッセージを追加しようとしましたが、何も得られませんでした。誰にでもそれ以上のアイデアはありますか?

例HTMLクラスの変更:私は、背景画像を変更したい

<img id="slider-banner" class="living-nutrients" src="[image path]"> 

例HTML:

<div class="home-middle-one-third" id="home-middle-first"> 
     <a href="#"></a> 
    </div> 

UPDATE:言った誰のために

それは "うまくいくはず" ...あなたそうです!書かれているように、それはページのフッタにあるのが好きではないが、頭に動かすと、プレスト!

このパズルの最後の部分は、ページの読み込みだけでなく、#スライダバナーの変更(IDを表す領域にどのクラスが存在するか)に基づいて検出して評価することです。現在。

IDは、スライダー内のスライドの1つの要素用です。どのスライドが表示されているかによって、IDに割り当てることのできる3つのクラスがあります。だから、スライドが変わるたびに評価するスクリプトが必要です。

アイデア?皆さん、ありがとうございました!

+0

を試してみて、CSSのソリューション: '#スライダbanner.living栄養素+#ホームミドル最初の{背景画像:のURL(.. )} 'あなたにとっては十分でしょう。 – kirilloid

答えて

5

background-imageは要素スタイルのプロパティで、独自のプロパティではありません。

ので.css("background-image","[path to new background image]");

+0

迅速な対応をありがとう。私は.cssが正しいことを理解していますが、それを変更してもまだ動作しません。私はまた、IF文の中でconsole.logを試して何も得ようとしなかった。それはあなたに他のアイデアを与えますか?ありがとう! –

+0

あなたのコードはうまくいくはずです。 'if(!jQuery)console.log(" jqueryまで今 ")' checkを追加してください。 – kirilloid

+0

ええ、それはに移動しました。私は前のフッタ領域でそれを持っていましたが、今は動作します。ありがとう。最新のアップデートに関するご意見は? –

2

ほとんど!

if(jQuery("#slider-banner").hasClass('living-nutrients')) 
{ 
    jQuery("#home-middle-first").css("background-image","[path to new background image]"); 
} 

cssは、CSS属性を設定する正しい機能です。
attrはHTML属性を設定します。 <div attr='attr value'>

編集
私は一種の次の例では、ここでスクリプトの機能について推測しています。
HTMLノードのbackground-imageを設定すると、それだけで背景画像が設定されます。それに応じて幅と高さも設定する必要があります。ノードの背景を確認するのに十分な大きさにする必要があります。背景イメージは自動的にノードのサイズを変更しません。

var slider = jQuery("#slider-banner"); // jQuery("#slider-banner") is slow, so we save it to a var if we use it more than once 
console.log(slider); // should be this in Chrome: [<img id="slider-banner" class="living-nutrients" src="[image path]">] 
if(slider.hasClass('living-nutrients')) 
{ 
    jQuery("#home-middle-first").css({ 
     "background-image":"url("+slider.attr('src')+")", // url() for good meassures 
     //"background-image":slider.css('background-image'), //try this if that doesn't work 
     "height":slider.height(), 
     "width":slider.width() 
    }); 
} 

Here is a working example.

+0

あなたの応答に感謝します。私はあなたの答えに同意し、それに応じてソースを変更しましたが、それでも動作しません。影響を受けたhtmlを含め、投稿に追加の詳細を追加しました。それはあなたに他のアイデアを与えますか?ありがとう! –

+0

私の答えを変更しました。 – Shea

+0

を確認してください。ベッドに入る前に、フッターからにスクリプトを移動していました。ページの読み込み時に評価されるようになりました。スライダのスライドが変更されるたびに評価する方法を検討しています。ありがとう! –

1

多分これ

jQuery("#home-middle-first").css("background-image","url([path])"); 
+1

これは実際にも正しいですが、 'url()'はjQueryでは必須ではありません。 – Shea

+0

ご回答いただきありがとうございます。私はあなたの答えに同意し、それに応じてソースを変更しましたが、それでも動作しません。影響を受けたhtmlを含め、投稿に追加の詳細を追加しました。それはあなたに他のアイデアを与えますか?ありがとう! –

関連する問題