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


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

例如:

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

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


9352
2017-11-14 06:28


起源



答案:


你可以打电话 内容() 在父元素上获取其子文本节点,然后使用 片() 同 指数() 找到要删除的文本节点。从那以后, 后() 将允许您添加新内容:

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

你可以测试一下 这个小提琴


15
2017-11-14 06:44



我显然仍然是jQuery的新手。这很优雅。 - dsmith
非常感谢你。 - Majid Darabi


答案:


你可以打电话 内容() 在父元素上获取其子文本节点,然后使用 片() 同 指数() 找到要删除的文本节点。从那以后, 后() 将允许您添加新内容:

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

你可以测试一下 这个小提琴


15
2017-11-14 06:44



我显然仍然是jQuery的新手。这很优雅。 - dsmith
非常感谢你。 - Majid Darabi


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

1
2017-11-14 06:43



感谢您的回答,但您的解决方案的问题是使用特定文本('此文字必须更改!!!')。我不知道必须改变的文字。 - Majid Darabi


2个输入是否在更大的容器div中?然后你可以设置div的innerHTML而不使用中间的文本


0
2017-11-14 06:32





你可以这样做吗?

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

0
2017-11-14 06:34



我无法添加任何标签 - Majid Darabi
对不起,我应该仔细阅读。 - dsmith


这可能对你有所帮助:

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


0
2017-11-14 06:44






$(文件)。就绪(函数(){
    警报(getAllBetween( “输入#CH1”, “输入#CH 2”));
});

function getAllBetween(firstEl,lastEl){
    var firstElement = $(firstEl); //第一元素
    var lastElement = $(lastEl); //最后元素
    var collection = new Array(); //元素集合
    collection.push(firstElement); //将第一个元素添加到集合中
    $(firstEl).nextAll()。each(function(){//遍历所有兄弟姐妹
        var siblingID = $(this).attr(“id”); //获取兄弟姐妹ID
        if(siblingID!= $(lastElement).attr(“id”)){//如果Sib不是LastElement
                collection.push($(本)); //将兄弟姐妹添加到集合中
        } else {//否则,如果Sib是LastElement
                返回虚假; // Break Loop
        }
    });
    回收; //返回集合
}

0
2017-11-14 06:35



stackoverflow.com/questions/481076/... 相同的内容 - run


我想你可以试试 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(); });

在这里查看结果 


0
2017-11-14 06:35





你可以使用段落

 对于文本如下

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


-1
2017-11-14 06:43



我无法控制HTML代码,因此我无法添加新标签! - Majid Darabi