Удалить текст с помощью jQuery Есть ли способ удалить текст, который не завернут в любой тег, используя jQuery <p>This is some text</p> This is "unwrapped" text //to be removed <span>some more text</span> Спасибо за помощь Ответ 1 Используя ответ этот вопрос: $(elem) .contents() .filter(function() { return this.nodeType == 3; //Node.TEXT_NODE }).remove(); Ответ 2 Во-первых, вы можете обернуть их фиктивными промежутками: $("body").contents() .filter(function(){ return this.nodeType != 1; }) .wrap("<span class='orphan'/>"); Теперь вы можете легко их удалить: $('span.orphan').remove(); Ответ 3 FWIW.. <div class="parent-element"> <p>This is some text</p> This is "unwrapped" text //to be removed <span>some more text</span> </div> через CSS: .parent-element { font-size: 0px; } .parent-element p { font-size: 12px; } .parent-element span { font-size: 14px; } Ответ 4 Обтекание этого элемента DOM означает, что jQuery может найти его: например: var text = 'This is "unwrapped" text'; $("div:contains('" + text + "')").remove(); или просто: $('p').next().remove(); Ответ 5 Это потрясающе, но в то же время следующий код не работает $("div.myClass:has(img)").contents().filter(":text").remove(); и код из первого сообщения работает $("div.myClass:has(img)") .contents() .filter(function() { return this.nodeType == 3; //Node.TEXT_NODE }).remove(); Важно помнить! jQuery 1.8.3. И прежде всего я помню, что манипуляция innerHTML работает намного быстрее, чем этот подход!
Ответ 1 Используя ответ этот вопрос: $(elem) .contents() .filter(function() { return this.nodeType == 3; //Node.TEXT_NODE }).remove();
Ответ 2 Во-первых, вы можете обернуть их фиктивными промежутками: $("body").contents() .filter(function(){ return this.nodeType != 1; }) .wrap("<span class='orphan'/>"); Теперь вы можете легко их удалить: $('span.orphan').remove();
Ответ 3 FWIW.. <div class="parent-element"> <p>This is some text</p> This is "unwrapped" text //to be removed <span>some more text</span> </div> через CSS: .parent-element { font-size: 0px; } .parent-element p { font-size: 12px; } .parent-element span { font-size: 14px; }
Ответ 4 Обтекание этого элемента DOM означает, что jQuery может найти его: например: var text = 'This is "unwrapped" text'; $("div:contains('" + text + "')").remove(); или просто: $('p').next().remove();
Ответ 5 Это потрясающе, но в то же время следующий код не работает $("div.myClass:has(img)").contents().filter(":text").remove(); и код из первого сообщения работает $("div.myClass:has(img)") .contents() .filter(function() { return this.nodeType == 3; //Node.TEXT_NODE }).remove(); Важно помнить! jQuery 1.8.3. И прежде всего я помню, что манипуляция innerHTML работает намного быстрее, чем этот подход!