3

我不知道怎么称呼它,但让我称之为半内部文本。

例子

<div id='myDiv'>
    This is the semi-inner text
    <div id='other'></div>
    This is the semi-inner text
<div>

我想删除/替换那些This is the semi-inner text使用 jquery 的。

我怎样才能做到这一点?

4

6 回答 6

3

如果您只关心子节点...

$('#myDiv').contents().filter(function() {
    return this.nodeType == 3
}).each(function() {
    this.data = this.data.replace(/This is the semi-inner text/g, 'swapped');
});​

js小提琴

如果要检查所有后代节点,请在检测到元素节点 ( this.nodeType == 1) 时使函数递归。

于 2012-05-03T07:50:18.047 回答
2
$('#myDiv')
    .contents()
    .filter(function() {
        return this.nodeType == 3;
    })
    .each(function() {
        $(this).remove();
    });
于 2012-05-03T07:51:16.190 回答
1

使用 contents() 并过滤掉所有等于 3 的 nodeType 并删除它们:

$('#myDiv').contents().filter(function() {
    return this.nodeType == 3;
}).remove();
于 2012-05-03T07:49:26.767 回答
0

使用以下代码替换内容

$("#other").html("your code");

并且用户将您的代码包装在带有 id 的 span 标记中

于 2012-05-03T07:49:41.977 回答
0

最简单的方法是将其放置在具有如下 id 的跨度中:

<div id='myDiv'>
    <span id="myInnerText">This is the semi-inner text</span>
    <div id='other'></div>
    This is the semi-inner text
<div>

然后像这样替换它:

$("#myInnerText").text("replacement text");
于 2012-05-03T07:49:51.153 回答
0

你也可以这样做:

target_div = $("#myDiv")
  reg_exp  = /This is the semi-inner text/g;
  new_text = "some other text"

  target_div.html(
    target_div.html()
      .replace(
        new RegExp(reg_exp),
        new_text)
        );
 });

演示

于 2012-05-03T08:09:08.570 回答