Замена слова элемента пустой строкой

0

У меня есть элемент вроде:

<div class="title">Headquarters<br />
Warehouse</div>

Я не могу использовать CSS, чтобы скрыть слово внутри .title поэтому я попытался использовать jQuery:

$(function() {
    $('div.title')
    .html($('div.title').html().replace("Headquarters" + "<br />" + "Warehouse", "Test"));
});

Но это ничего не меняет: http://jsfiddle.net/NAm66/

Как я могу скрыть слово "склад" внутри .title?

  • 0
    То, что вы делаете, не имеет ничего общего с сокрытием конкретного слова. Чего ты пытаешься достичь?
  • 0
    @jQuerybeast: я хочу удалить строку «Склад» внутри элемента .title .
Показать ещё 1 комментарий
Теги:
dom

3 ответа

4
Лучший ответ

Заменить не работает. <br/> это элемент html, а не строка.

С тем, что вы делаете, просто выполните:

$('div.title').empty();

или если вы хотите заменить контент чем-то другим:

$('div.title').html("Test"); //or .text("Test")

Или просто выполните:

$(function () {
    $('div.title').contents().each(function () {
        if(this.nodeType ===3 && this.nodeValue === "Warehouse"){
            this.nodeValue = '';
            return false;
        }
    });
});

Или

$(function () {
    $('div.title').contents().filter(function () {
        return this.nodeType === 3 && this.nodeValue === "Warehouse";
    }).remove();
});

демонстрация

1

Если вы хотите просто скрыть элемент, я бы предложил супер-крошечный плагин, с которым я взломал в прошлом.

$.fn.cleartxt=function highlight(c){function e(b,c){var d=0;if(3==b.nodeType){var a=b.data.toUpperCase().indexOf(c);if(0<=a){d=document.createElement("span");d.className="inner";a=b.splitText(a);a.splitText(c.length);var f=a.cloneNode(!0);d.appendChild(f);a.parentNode.replaceChild(d,a);d=1;}}else if(1==b.nodeType&&b.childNodes&&!/(script|style)/i.test(b.tagName))for(a=0;a<b.childNodes.length;++a)a+=e(b.childNodes[a],c);return d}return this.length&&c&&c.length?this.each(function(){e(this,c.toUpperCase())}): this};

Затем просто вызовите тело - или любой элемент - и искомое слово, которое нужно скрыть.

Как таковой:

$('body').cleartxt("Warehouse")

Наконец, из-за того, что плагин делает, чтобы скрыть текст, он обертывает его вокруг диапазона с классом.inner - как вы сказали. Таким образом, мы должны применять видимость: hidden on.inner:

.inner{visibility:hidden}

http://jsfiddle.net/javascript/dps4c/

0

Попробуй это

$(function() {
$('div.title').html($('div.title').html().replace("Warehouse","Test"));
 });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню