2016-05-05 4 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

Взгляните на this fiddle. Вы должны будете использовать какой-то селектор, чтобы выбрать элемент, который Вы хотите в JQuery - в этом примере, это $("#test") в строке 4. this не будет работать, как вы думаете, это будет в этом примере, как и другие пользователи.