Jquery在两个元素之间更改文本

时间:2011-11-14 06:28:46

标签: javascript jquery html

我想使用JQuery在两个元素之间更改文本,但我不知道!

例如:

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

另外,我对此Html代码没有任何控制权,因此我无法添加任何ID或标签。

8 个答案:

答案 0 :(得分:15)

您可以在父元素上调用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.");

您可以在this fiddle中进行测试。

答案 1 :(得分:1)

使用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);

答案 2 :(得分:0)

2个输入是否在更大的容器div中?然后你可以看到设置divs innerHTML而没有

之间的文本

答案 3 :(得分:0)

你可以这样做吗?

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

答案 4 :(得分:0)


$(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
}

答案 5 :(得分:0)

我认为您可以尝试contents()选择所需复选框旁边的文本节点并将其删除。

但是,我认为它可能在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(); });

Check out the result here

答案 6 :(得分:0)

这可能对您有所帮助:

http://api.jquery.com/nextUntil/

答案 7 :(得分:-1)

您可以将段落

用于以下文字

<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 ");