2012-06-21 4 views
-4

Этот демонстрационный код трижды и каждый раз добавляет текст. Мне нужно, чтобы текст не добавлялся, а заменялся, чтобы ранее добавленный текст удалялся перед добавлением нового. Я пробовал много чего, ничего не работало.Как удалить текст из-за элемента с помощью jQuery

EDIT: вы не можете добавить дополнительный тег после пролета!

<div> 
    <span id="i_1">this is </span> 
</div> 
​ 
var i = 3; 
while(i>0) 
{ 
    //// how to remove the text added on the previous iteration? 
    $("#i_1").after('text'); 
    i--; 
} 
​ 

http://jsfiddle.net/pHYHW/

+0

«Вы не можете добавить дополнительный тег после пролете!» --- Есть ли какая-то ** действительная ** причина этого требования? Что случилось с другим дополнительным тегом (внутри или после существующего 'span')? – zerkms

+0

Да, действительная причина называется ** learing **. Дело в том, чтобы изучить возможности jQuery.Добавление дополнительного тега в этом смысле совершенно не соответствует теме. –

+0

learning - это когда вы можете реализовать что-то самым обычным и простым способом :-) В этом случае нужно добавить еще один тег. Это лучшее и самое простое решение, используемое всеми. В этом случае у вас нет возможности выбрать часть текста, положение которой невозможно описать селекторами (и этого не может быть) – zerkms

ответ

3

Кусок торта, это то, что JQuery плагин afterText для.

Пример/Demo:

<div> 
    <span id="i_1">this is </span> 
</div> 
​ 
var i = 3; 
while (i) 
{ 
    $("#i_1").afterText('text'); 
    i--; 
} 

jQuery afterText Plugin on github

+0

Действительно? Плагин для этого? –

+0

Скалы. Полностью делает то, что просит OP. Вы думаете, что плагины плохие? Я предлагаю вам прекратить использование jQuery, тогда я имею в виду jQuery без плагинов? – hakre

+0

Мне пришлось снова принять. Первоначально принятое решение было неустойчивым. –

0

Вместо того, чтобы текст после элемента, изменить HTML, чтобы включить элемент, который содержит текст:

<span id="i_1">this is </span> <span id="value"></span> 

и просто установить текст другого элемента:

for (var i = 3; i > 0; i--) { 
    $("#value").text('text'); 
} 
+0

Wow. Быстрый огонь ... –

+0

Нет ничего сложнее добавить еще один элемент. Вопрос в том, как это сделать. –

+0

«Вопрос в том, как это сделать без». --- кто сказал так? Я не вижу такого требования в исходном вопросе. Любая ** настоящая ** причина следовать неочевидному пути вместо пуленепробиваемого решения? – zerkms

0

Эта работа:

var i = 3; 
var old_text = $('#i_1').html(); 
while(i>0) 
{ 
    $("#i_1").html(old_text + 'text'); 
    i--; 
} 

DEMO по адресу: http://jsfiddle.net/2DcXe/

+0

Это близко, но все же любопытное обходное решение. –

0

Я не уверен, если это то, что вы ищете, но попробуйте это:

HTML

<div> 
    <span id="i_1">this is </span><span id="i_2"></span> 
</div> 

Javascript

var i = 3; 
while(i>0) 
{ 
    $("#i_2").html('text'); 
    i--; 
} 
2
var i = 3; 
while (i) { 
    $("#i_1")[ 0 ].nextSibling.nodeValue = 'text'; 
    i--; 
} 

Демо: http://jsfiddle.net/Ralt/pHYHW/7/

Там вы идете, наслаждайтесь. Вы также можете использовать data вместо nodeValue, если хотите.

Кстати, это работает, потому что nextSibling - это textNode, таким образом, есть свойство nodeValue.

+0

и почему именно вы использовали '$ (" # i_1 ") [0]' вместо 'document.getElementById ('i_1')'? –

+0

нужны некоторые $ :) – rlemon

+0

@ tereško, потому что есть [tag: jquery], должны быть некоторые! –

0

Ну это не JQuery, но вот как я бы это сделать ...

var ele = document.getElementById('i_1'); // get the element 
var tn = ele.nextSibling, // get it's next sibling (picks up text nodes) 
    mode = 'textContent' in ele ? 'textContent' : 'innerText'; // (ie is smelly) 
for (var i = 3; i > 0; i--) { 
    tn[mode] = "Text"; // change the text content. 
} 

Here is the Demo

+0

Это сломано. Сломанный! Почему вы не хотите использовать плагин? Нечего делать вообще! ^^ – hakre

+0

@hakre за исключением раздражающей зависимости, которой нужно управлять: P – Esailija

+0

Кажется, для меня работает, и теперь мне не нужны ваши бесполезные накладные расходы. – rlemon

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