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();
});
Посмотрите результат здесь
Ответ 7
это может быть полезно для вас:
http://api.jquery.com/nextUntil/
Ответ 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 ");