2011-07-19 2 views
0

Я знаю, что есть несколько вопросов и ответов на StackOverflow об использовании regex в jQuery, но они кажутся немного сложными.Простые соответствия регулярных выражений в JQuery

Я не понимаю, почему это не работает:

$("div").click(function() { 
    $(this).parent().className.replace(/photo-\w*/, 'photo-2'); 
}); 

Похоже, простой операции: заменить родительский щелкнули DIV (что может иметь класс что-то вроде «фото-5»), с «фото-2»

Может кто-нибудь объяснить, почему приведенный выше код не работает, и обеспечить самый простой/самый чистый способ? Спасибо

+0

Ваша проблема не имеет ничего общего с регулярными выражениями. –

ответ

2

$ (this) .parent() предоставит вам объект jQuery. Попробуйте это

$("div").click(function() { 
    $(this).parent()[0].className = $(this).parent()[0].className.replace(/photo-\w*/, 'photo-2'); 
}); 
+0

Только для записи у jQuery есть функция '.get', которая может использоваться вместо' [] '. Он также поддерживает отрицательные индексы и т. Д. – pimvdb

+1

Я так ли, или результат замены должен быть назначен где-то? (то есть 'className = className.replace (...)') –

+0

Проверьте мой отредактированный ответ. – ShankarSangoli

1

Заменить нужно где-то назначить, а не просто выполнить (в противном случае оно не влияет на фактическое значение). Тем не менее, попробуйте следующее:

$('div').click(function(){ 
    var $p = $(this).parent().get(0); 
    $p.className = $p.className.replace(/photo-\w*/, 'photo-2'); 
}); 

Working on my end.

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