Я пытаюсь удалить "или" из этого HTML-кода:
<div>
<a href="https://store-b2aus7wd.mybigcommerce.com/account.php">Account</a>
<a href='https://store-b2aus7wd.mybigcommerce.com/login.php' onclick=''>Sign in</a>
or
<a href='https://store-b2aus7wd.mybigcommerce.com/login.php?action=create_account' onclick=''>Create an account</a>
</div>
используя этот код:
$("div").html().replace(/\or/g,"");
но он ничего не делает.
Вместо того, чтобы работать с html как строкой, лучше было бы это сделать, работая с объектами DOM:
$('div').contents().filter(function() {
return this.nodeType == 3 && $.trim(this.textContent) == 'or';
}).remove();
Здесь скрипка: http://jsfiddle.net/Lm4pC/. Похоже, что .remove()
имеет нечетный эффект на расстоянии. Использование .replaceWith('\n')
или .replaceWith(' ')
вместо этого может работать лучше в зависимости от вашей ситуации: http://jsfiddle.net/kdYQP/
$("div").html()
возвращает текущий html div как строку. Что вы тогда манипулируете. Как строка. Вам нужно назначить его обратно:
$("div").html( $("div").html().replace(/\or/g,"") );
Тем не менее, вы уверены, что хотите сделать это с регулярным выражением? Если символы "или" появляются в одном из URL-адресов, они также удаляются.
Просто опубликуйте это, если вы удалите весь текст (на данный момент это немного неясно) и не хотите использовать оператор regex:
$("div").html($("div a"));
Это изменит HTML- div
чтобы включить только элементы a
, существенно удалив весь текст из HTML. В этом случае единственный текст есть or
.
$('div').html( $('div').children() )
), но проблема в том, что вы теряете пробел между ссылками.
\o
является необходимым и может даже вызвать ошибки.