2010-09-30 2 views
1

У меня есть проблема с html().replace:.Надеть проблема

<script type="text/javascript"> 
    jQuery(function() { 
    jQuery(".post_meta_front").html(jQuery(".post_meta_front").html().replace(/\<p>Beschreibung:</p> /g, '<span></span>')); 
}); 
</script> 

, что это неправильно в моем сценарии?

+0

Было бы хорошо, если бы вы описали то, что проблема есть. И отправил ваш HTML или хотя бы короткий фрагмент. – Strelok

+0

нужны цитаты вокруг регулярного выражения? – Ascherer

ответ

0

Похоже, что вы не избегаете всех специальных символов в параметре find функции replace. Вы избегаете первого символа <.

Попробуйте что-то вроде:

/\<p\>Beschreibung:\<\/p\>/g 

Обратите внимание, что на смену является функцией JavaScript не JQuery.

+0

Thansk Damovisa. Ты был прав. – chris

1

Вам нужно спрятать косую черту / в части регулярного выражения.

<script type="text/javascript"> 
    jQuery(function() { 
    jQuery(".post_meta_front").html(jQuery(".post_meta_front").html().replace(/<p>Beschreibung:<\/p> /g, '<span></span>')); 
}); 
</script> 
4

Почему вы используете regex для этого?

Если вы хотите заменить элемент другим, вы можете использовать jQuery's .replaceWith() method.

jQuery(".post_meta_front p:contains('Beschreibung:')") 
               .replaceWith('<span></span>'); 

Или, если вам нужно, чтобы обеспечить точное соответствие по содержанию:

jQuery(".post_meta_front p").filter(function() { 
    return $.text([ this ]) === 'Beschreibung:'; 
}).replaceWith('<span></span>'); 
+2

+1. Полагаться на формат вывода 'html()' вообще нецелесообразно (разные браузеры будут давать разворот текста, форматирование случая элемента и атрибута). Использование методов типа DOM, подобных этому, является более надежным и не излишне разрушает и воссоздает все остальные узлы, которые вы не заменяете. – bobince

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