2016-05-05 16 views
0

サイトを読み込んで親要素のスタイルを変更したいと思います。親のjquery change css

HTML

<p><script>setBGColor("True");</script>test</p> 

JS

function setBGColor(status){ 
    if (status == "True") 
     $(this.parent).css("background", "green"); 
} 

しかし、いくつかの理由:私はそれのよう可能だろうと思いました。緑色にならない。何故なの?

+0

これはうまくいきません。これは、キーワード 'this'があなたの関数の文脈で参照しているもののためです。 'this'キーワードは、関数のコンテキスト内で使用されるとき、一般にその関数を呼び出したオブジェクトを参照します。スクリプトタグ内で呼び出すので、ウィンドウオブジェクトを参照します(グローバルコンテキストで実行しています)。したがって、 'this.parent'(または' this.parentNode')は "未定義"になります。あなたがしようとしていることをやり遂げる方法があるかもしれませんが、それは面倒でお勧めできません。 –

+0

ここでは、グローバルコンテキストの['this''](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this#Global_context)についてもう少し詳しく説明します。 'this'は評価中) –

+0

また、私はあなたが背景色をしたいと思う。 – nurdyguy

答えて

0

は、あなたはjQueryのにしたい要素を選択するセレクタのいくつかの種類を使用する必要がありますthis fiddle.を見てみましょう - この例では、それはあなたがそれを考えているような行4 this$("#test")は動作しませんですこの例では、他のユーザーと同様です。