2012-05-11 7 views
4

Как бы добавить атрибут к элементу, если этот элемент еще не имеет этого атрибута?Добавить атрибут, если он еще не существует

if (' this does not have class=selected') { 

    $(this).addClass('selected'); 
} 
+1

Вы имеете в виду класс конкретно или какой-либо атрибут? Потому что вы можете вызывать .addClass() столько раз, сколько хотите. – n8wrl

+0

И что не добавит дубликат? – David542

+0

Не имеет значения, если это дубликат. Либо элемент имеет класс, либо нет; если он имеет один и тот же класс более одного раза, с точки зрения Javascrcipt и DOM, у него есть класс. –

ответ

3

Если вы говорите конкретно о классах, то просто идти вперед и добавить его. Если он уже существует, он не будет добавлен дважды.

$(this).addClass('selected'); // will only add the class if it doesn't exist 

Я сомневаюсь, что первое тестирование для класса было бы более эффективным.

демо:http://jsfiddle.net/2sLd5/

4
if(!$(this).attr('name')) { 
    $(this).attr('name', 'value'); 
} 

, что должен сделать это.

+0

Я просто пробовал это, как и то, что хочу, но не мог заставить его работать, если (! $ (This) .attr ('placeholder')) { $ (this) .attr ('placeholder', 'c'); } –

0

Вы можете использовать атрибут не селектор. Это работает не только для классов, но и для любого атрибута

if($('#elemid[class!="myclass"]').length) { 
    $('#elemid').addClass('otherClass'); 
} 

Конечно, как упоминалось ранее, если вы хотите добавить класс вашей проверки против, просто добавьте его. В этом нет вреда.

0

Нет необходимости проверять и видеть, присутствует ли класс перед добавлением класса. Просматривая источник jQuery (https://github.com/jquery/jquery/blob/master/src/attributes.js, ищите addClass), похоже, что addClass ничего не сделает, если класс уже присутствует. Поэтому сначала не нужно проверять проверку.

Смежные вопросы