使用Javascript定位<div>?</div>

时间:2011-09-05 01:41:32

标签: javascript jquery html

我的代码类似于:

<div>
<div> randomText 11235 </div>
<div> randomText </div>
<div> randomText </div>
<div> randomText </div>
<div> randomText </div>
</div>

如您所见,每个div都包含随机文本,但第一个div也在末尾添加了“11235”。

这个“11235”将添加到任何div的末尾(请注意,这可以是多个div)。

以下是可能发生的一种情况:

<div>
<div> randomText </div>
<div> randomText 11235 </div>
<div> randomText </div>
<div> randomText 11235 </div>
<div> randomText </div>
</div> 

是否可以将那些仅添加了11235的div作为目标并删除11235.

我更喜欢javascript中的解决方案(jQuery很好)。

由于

2 个答案:

答案 0 :(得分:9)

使用jQuery,您可以迭代包含11235的所有div,并使用标准的js-replace函数替换这些元素的文本中的“11235”:

$("div div:contains('11235')").each(function () {
    $(this).text($(this).text().replace("11235",""));
});

正如Rick所指出的,你也可以使用隐式迭代,它稍微优雅一点:

$("div div:contains(11235)").text(function (i, text) {
     return text.replace("11235","");
});

如果每个div元素都有可能包含11235的多次出现,请使用替换的正则表达式:

$("div div:contains(11235)").text(function (i, text) {
    return text.replace(/11235/g,"");
});

答案 1 :(得分:1)

您可以使用:contains()选择器和jQuery的html()方法,如下所示:

$("div:contains(11235)").html(function( i, html ) {
   return $.trim( ( html || "" ).replace(/11235/g, "") );
});

这不需要使用each()进行迭代,因为jQuery构建在“隐含迭代”的上下文中,这意味着所有setter方法将自动迭代它们从调用j​​Query对象接收的每个元素(除非另有说明)

请参阅:http://jsfiddle.net/rwaldron/DeybW/