2013-03-16 2 views
-2

Я пытаюсь добавить класс к элементу h1 на основе текста, который находится внутри элемента h1.jQuery addClass to h1

var title = $("h1").text(); 
if (title == "Welcome") { 
$("h1").addClass("hide"); 
} 

http://jsfiddle.net/4LjnT/

+1

Вы забыли добавить jQuery или Zepto. – jantimon

+0

http://jsfiddle.net/Palestinian/4LjnT/3/, как сказал @jantimon. – Omar

ответ

5

Я предлагаю:

$('h1').addClass(function(){ 
    return $(this).text() == 'Welcome' ? 'hide' : ''; 
}); 

JS Fiddle demo.

Или, чтобы уменьшить ненужные вызовы JQuery:

$('h1').addClass(function(){ 
    return (this.textContent || this.innerText) == 'Welcome' ? 'hide' : ''; 
}); 

JS Fiddle demo.

И я может было несколько минут, чтобы убить, что привело к этому JavaScript Альтернативой равнине:

Object.prototype.textToClass = function(needle,classToAdd){ 
    var len = this.length, 
     classes = [], 
     txt; 
    for (var i=0; i<len; i++){ 
     txt = this[i].textContent || this[i].innerText; 
     if (txt == needle){ 
      classes = this[i].className.split(/\s/); 
      classes.push(classToAdd); 
      this[i].className = classes.join(' '); 
     } 
    } 
    return this; 
}; 

document.getElementsByTagName('h1').textToClass('Welcome','hide'); 

JS Fiddle demo.

Ссылки:

+0

Спасибо! Это сработало отлично. У меня есть пара вопросов. Какова цель "?" и пустой? – brandozz

+0

Добро пожаловать! Что касается '?' И таких, см. Ссылки, посмотрите на условный/тернарный оператор в ссылках. –

2

JQuery не загружен в этой скрипке.

Также вы не заворачиваете свой код в функцию document.ready(), поэтому существует риск, что он не может быть выполнен так, как вы хотите. Не забудьте выбрать jQuery из раскрывающегося списка «Frameworks & Extensions» справа. Кроме того, всегда помните, чтобы проверить консоль вашего браузера, чтобы увидеть, есть ли ошибки, это хорошая проверка правильности таких вещей. Случается со мной все время:)

JS

$(function(){ 

    var title = $("h1").text(); 

    if (title === "Welcome") { 
    $("h1").addClass("hide"); 
    } 

}); // end ready 
+0

Хорошо, добавил jQuery к скрипке, и теперь он работает. У меня есть документ document.ready в коде на моей локальной машине, должно быть что-то не так с моим jquery локально. – brandozz

+0

Является ли ваша консоль локальными локальными ошибками? Вы пытались удалить все другие JS и просто использовать ваш снимок? –