JQuery изменяет текст между двумя элементами

Я хочу изменить текст между двумя элементами с помощью JQuery, но я понятия не имею!

например:

<input type='checkbox' name='ch1'>
    This text must be changed !!!
<input type='checkbox' name='ch2'>

Кроме того, у меня нет никакого контроля над этим кодом Html, поэтому я не могу добавить никаких идентификаторов или тегов.

Ответ 1

Вы можете вызвать contents() в родительском элементе, чтобы получить его дочерние текстовые узлы, затем используйте slice() с index(), чтобы найти текстовые узлы, которые вы хотите удалить. Оттуда after() позволит вам добавить новый контент:

var ch1 = $("input:checkbox[name=ch1]"),
    ch2 = $("input:checkbox[name=ch2]"),
    contents = ch1.parent().contents();
contents.slice(contents.index(ch1) + 1, contents.index(ch2)).remove();
ch1.after("The text was changed.");

Вы можете протестировать его в этой скрипке.

Ответ 2

Вы используете функцию js replace для замены текста, который хотите заменить Вот пример: http://jsfiddle.net/yangchenyun/8zFFc/

Вот код

var replacedText = $('input[name=ch1]').parent().html().replace('This text must change !!!', 'replaced text');

$('input[name=ch1]').parent().html(replacedText);

Ответ 3

Являются ли 2 входа в более крупном контейнере div? Затем вы можете установить этот divs innerHTML без текста между ними

Ответ 4

Можете ли вы объявить такой пробел?

<input type='checkbox' name='ch1'>
<span id="change"> This text must change !!!</span>
<input type='checkbox' name='ch2'>

Ответ 5

$(document).ready(function(){
    alert(getAllBetween("input#ch1","input#ch2"));
});

function getAllBetween(firstEl,lastEl) {
    var firstElement = $(firstEl); // First Element
    var lastElement = $(lastEl); // Last Element
    var collection = new Array(); // Collection of Elements
    collection.push(firstElement); // Add First Element to Collection
    $(firstEl).nextAll().each(function(){ // Traverse all siblings
        var siblingID  = $(this).attr("id"); // Get Sibling ID
        if (siblingID != $(lastElement).attr("id")) { // If Sib is not LastElement
                collection.push($(this)); // Add Sibling to Collection
        } else { // Else, if Sib is LastElement
                return false; // Break Loop
        }
    });         
    return collection; // Return Collection
}

Ответ 6

Я думаю, вы можете попробовать contents() выбрать текст node рядом с нужным флажком и удалить его.

Однако, я думаю, что это может не работать в IE6/7.

попробуйте это

$(function(){
$('input:checkbox').parents().contents()

.filter( function(index){return (this.nodeType === 3 && $('input:checkbox').parents().contents().eq(index-1).attr('name') === 'ch1' ); }).remove(); });

Посмотрите результат здесь

Ответ 8

Вы можете использовать абзац

для текста, как показано ниже

<input type='checkbox' name='ch1'>
<p id="change_text"> This text must change !!!</p>
<input type='checkbox' name='ch2'>

в использовании jquery

$("#change_text").html(" Your text here ");