Показать сообщение отдельно
  #10 (permalink)  
Старый 29.08.2008, 00:24
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Нету никаких таких средств даже в самых современных браузерах можно только выполнить поиск по нескольким классам node.getElementsByClassName('className1 className2');
Поэтому используй регулярные выражения. Если кажутся громоздкими коды, которые тебе написали ранее, можно немного сократить функцию:
function hasClass(str, search) {
	return !!(str.search('\\b' +  search + '\\b') + 1);
}

hasClass(node.className, 'className') - возвратит true или false в зависимости от наличия указанного класса.

Говорят, что при использовании мета-символа '\b' (граница слова) в древнейших браузерах бывают проблемы, лично я не сталкивался, в IE5 - работает...

Можно пойти дальше и добаить в прототип объекта String новый метод
String.prototype.hasClass = function(str) {
	return this.search('\\b' +  str + '\\b') + 1;
}

Используем так:
node.className.hasClass('className')

Вернет 0 - если класс не найден или индекс+1 первого вхождения подстроки с именем класса в строке className :cool:

p.s. последний вариант больше всего похож на стандартный метод для успокоения совести ))))

Последний раз редактировалось Octane, 29.08.2008 в 00:54.
Ответить с цитированием