2015-01-30 7 views
1

Я должен проверить имена классов различных узлов в методе делегирования событий я использую:Javascript RegExp имя тестового класса

тестовый пример я использую

function clickHandler(e){ 
     var evt = e || window.event; 
     target = evt.target || evt.srcElement, 
     cls = target.className,id = target.id; 

     if(/\bcell\b/i.test(cls)){ 
      //perform some action is node having classname cell is clicked 
     } 
    } 

, но этот конкретный тест подходит для узлов с именем класса .cell, а также .cell-validation-text.

Вышеуказанный тест возвращает true для обоих этих узлов. Как я могу изменить мой РегВыр так как мой выше тест возвращает истинное только для узла, имеющего класса .cell и лжи для текста .cell-проверки

+0

Не делайте этого так. Вместо этого поместите разные обработчики на разные элементы. –

+0

@torazaburo ... сэр ... не могли бы вы проиллюстрировать это ..? –

ответ

3
/\bcell(\s|$)/ 

\s соответствует любому пробелам

$ соответствует концу строки

EDIT: если вы не хотите, чтобы соответствовать "хой-клетке" или:

/(^|\s)cell(\s|$)/ 

^ спичек начало строки

0

Просто сделать использование якорей и чередованием оператора |

function clickHandler(e){ 
    var evt = e || window.event, 
    target = evt.target || evt.srcElement, 
    cls = target.className,id = target.id; 
    if(/\bcell(\s|$)/i.test(cls)){ 
     //perform some action is node having classname cell is clicked 
    } 
} 

Но было бы лучше, если бы вы сделали что-то вроде

if(cls.split(" ").indexOf("cell") > -1){ 

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