#javascript #regex
#javascript #регулярное выражение
Вопрос:
Я пытаюсь найти все теги p со встроенным стилем attrs style=»text-align: center;», которые содержат только amp;nbsp;
и ничего больше. А затем удаляем весь p для каждого найденного.
Есть другие теги p с тем же attr, которые содержат больше, чем просто nbsp, которые я хочу сохранить, я просто застрял на поиске тех, в которых указан только пробел. Глупый редактор wordpress TinyMCE сводит меня с ума.
Это основа того, над чем я работал, делая это с помощью. просто выводит все теги text-align center p с выравниванием по центру.
var p = $('.entry p[style="text-align: center;"]');
p.each(function() {
console.log(p);
});
Глупая маленькая штучка, я не хочу больше тратить время, пытаясь понять, что я делаю не так. Вот пример страницы, на которой есть материал, с которым я работаю.
http://www.drinkinginamerica.com/page/14 /
Спасибо
Ответ №1:
Вы можете сделать это с помощью remove()
функции:
$('.entry p').each(function() {
var $p = $(this),
txt = $p.html();
if (txt=='amp;nbsp;') {
$p.remove();
}
});
Смотрите http://jsfiddle.net/nrabinowitz/LJHyA / для рабочего примера. Это предполагает довольно строгий случай, когда единственной вещью в p
теге является amp;nbsp;
объект.
Слишком медленно — @mu побеждает.
Комментарии:
1. Вы не учли
style
фильтрацию атрибутов, но$(this).html() == 'amp;nbsp;'
это главное.2. это работает, спасибо. я собирался использовать метод remove (), но не смог заставить его выделить теги nbsp p. слишком старался сделать это в 1 строку
3. @mu — Наверное, я предполагал, что мы, вероятно, хотели удалить все
p
теги, которые только содержалиamp;nbsp;
, независимо от стиля, но, конечно, селектор можно настроить при необходимости.
Ответ №2:
Я думаю, вы хотите этого:
$('.entry p[style="text-align: center;"]').each(function() {
var $this = $(this);
if($this.html().match(/^s*amp;nbsp;s*$/))
$this.remove();
});
Это немного чувствительно к точному style
атрибуту, но несколько смягчает то, как amp;nbsp;
выполняется форматирование внутри абзацев.
Я думаю, что что-то более слабое могло бы послужить вам лучше:
$('.entry p').each(function() {
var $this = $(this);
if($this.css('text-align') == 'center'
amp;amp; $this.html().match(/^s*amp;nbsp;s*$/))
$this.remove();
});