2016-11-05 3 views
0

Я пытаюсь удалить текст после значка.Удалить текст после элемента

<i class="flagstrap-icon flagstrap-as" style="margin-right: 10px;">x</i>France 

$('.flagstrap-icon').next().remove(); 

Проблема в том, что next() не будет работать без элемента.

Пример <span>France</span>

Demo

Любая идея, чтобы удалить текст после значка?

+0

Не могли бы вы разместить более полный html, что такое контейнер элементов 'i', как они вставляются? –

+0

@AshkanMobayenKhiabani Мне нужно удалить текст после значка в этом плагине, когда выбрана страна. http://blazeworx.github.io/flagstrap/ – user455318

ответ

1

Jquery не может действительно целевые узлы, которые не являются элементами, но простые JS могут

$('.flagstrap-icon').get(0).nextSibling.remove() 

FIDDLE

Обратите внимание, что это использует родной remove(), который не поддерживается в старых браузерах, если вам нужно их поддержать, вы бы сделали

var node = $('.flagstrap-icon').get(0).nextSibling; 
node.parentNode.removeChild(node); 
0

метода JQuery .next() выбирает следующий элемент и его содержимое и не выделяет текст, а не внутри элемента, причина это работает, как это происходит потому, что JQuery смотрит на DOM Tree и не открытый текст.

о том, как выбрать исходный текст без тега, я не думаю, что его можно/я не знаю

Надеется, что это помогло mukund2003

0

Если <i> элемента находится в родительском контейнере и не существует дополнительный элемента в этом контейнере вы можете сделать что-то вроде:

$('.flagstrap-icon').parent().html($('<div>').append($('.flagstrap-icon').clone()).html()); 

Однако он не будет работать правильно, если родитель содержит другие элементы.

DEMO

+0

Это не работает, просто попробуйте в консоли js на странице плагина. – user455318

+0

@ user455318, посмотрите демо. Это работает shoulkd, если нет других проблем, таких как jQuery, не загружается в момент запуска этого кода, или текст после того, как элемент 'i' динамически добавляется после запуска вашего кода ... –

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