2013-07-02 2 views
1

Это должно быть быстрым!Проверить имя класса элемента

мне нужно различать два элемента по щелчку по имени класса .. например

HTML:

<p class='p1'>paragraph element</p> 
<p class='p2'>paragraph element</p> 

JQuery:

$('p').on('click', function() { 
    if ($(this).attr('class', 'p1') { 
     callThisFunction(); 
    } else { 
     doNothing(); 
    } 
}); 
+0

других ответов, предоставленных именно то, что вы просили, но я думаю, что вы пытаетесь сделать, требует иного подхода. См. Мой ответ для деталей. – Corion

ответ

5
if ($(this).is(".p1")) { 

или

if ($(this).hasClass("p1")) { 

$(this).attr("class", "p1") Фактически устанавливает атрибут класса. Проверка на $(this).attr("class") не годится ни потому, что может иметь несколько классов.

+0

Я как раз собирался ответить 'hasClass', когда увидел, как изменился ваш ответ, было интересно, почему никто раньше не заметил этого! lol – SpYk3HH

0

if($(this).attr('class') === 'p1'){} - это то, что вы хотите использовать. $(this).attr('class', 'p1') устанавливает для текущего элемента класс p1.

2

$(this).hasClass('p1') быстрее.

+0

вы также можете отбросить ванильный javascript и сделать 'if (this.className.match (/ \ bp1 \ b /))'. '\ b' является границей (пробелами и т. д.). – kalley

2

Используйте .hasClass(), чтобы проверить класс.

$('p').on('click', function() { 
    if ($(this).hasClass('p1')) { 
     callThisFunction(); 
    } else { 
     doNothing(); 
    } 
}); 

работает демо: http://jsfiddle.net/nSMDA/

1

Если вам необходимо дифференцировать поведение как this-, где только некоторые элементы принять меры - то, что вы действительно должны делать это только привязки к тем, которые соответствуют, а не каждому элементу <p>.

$('p.p1').on('click', callThisFunction); 

Вот новая вилка jsfiddle Гома: http://jsfiddle.net/4b8Pf/2/

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