Это очень понятно, почему вы никогда не должны были бы сделать это, но:
Проблема заключается в том, что >
и <
не является частью HTML содержимого из .field-info
тега, они являются тегами , Вызов .html()
не возвращает теги, которые обертывают текущий узел.
Учитывая этот HTML фрагмент в DOM ...
<div class="field-name-commerce-price">
<div class="field-item even">0,00 €</div>
</div>
Использование $(.field-item).html()
возвратит 0,00 €
, HTML-содержимое тега выбранного. Нет >
или <
для соответствия.
Если вы хотите заменить часть самих тегов, вы можете перейти к родительскому элементу элемента. Использование $('.field-item').parent().html()
вернет HTML-код вложенного элемента, <div class="field-item even">0,00 €</div>
, который будет соответствовать вашему replace
.
Попробуйте следующее:
$('.field-name-commerce-price .field-item').html(function(i, oldhtml) {
return oldhtml.parent().replace('>0,00 €<', '><span style="font-size:13px;">No price</span><');
});
-
RE: Ваши обновления
Только в случае, если вы хотите знать, почему я должен сделать это: Мне нужно, чтобы избежать чтобы заменить такие значения, как «150,00 €», «90, 00 €» и так далее. Мне нужно это, чтобы заменить значение «0,00 €», только это.
Затем, используя >
и <
в качестве разделителей на вашей замены строки является неправильным решением. Либо используйте простую проверку равенства ...
if ('0,00 €' == $('.field-name-commerce-price .field-item').text()) {
$('.field-name-commerce-price .field-item').html('<span style="font-size:13px;">No price</span>');
}
Или использовать регулярные выражения, и прикрепить шаблон поиска с ^
и $
, или добавить границы раны:
$('.field-name-commerce-price .field-item').html(function(i, oldhtml) {
return oldhtml.replace(/\b0,00 €\b/, '<span style="font-size:13px;">No price</span>');
});
Wouldn» t регулярное выражение имеет больше смысла? – j08691
Что произойдет, когда вы напишете '<' вместо '<' и '>' вместо '>'? Я имел в виду единственные, а не те, которые являются частью html-тега – reporter
@reporter. Ничего не произошло бы, потому что это попытка сопоставить объект HTML с фактическим закрывающим тегом. – j08691