【发布时间】:2014-05-14 03:12:20
【问题描述】:
我正在寻找一个脚本来搜索和替换服务器端或客户端的文本。
虽然用 PHP 替换字符串中的所有文本或用 jQuery/Javascript 替换页面上的所有文本很简单,但我无法弄清楚如何使脚本根据类忽略某些文本部分父元素。
考虑以下情况:
<div>
<span>
This keyword should be replaced.
</span>
<span class="ignore">
this keyword should be ignored.
</span>
<span>
This keyword should be replaced.
<span class="ignore">
this keyword should be ignored.
</span>
</span>
<span class="ignore">
this keyword should be ignored because of class name.
<span>
this keyword should also be ignored because it's a child of an ignored element.
</span>
</span>
</div>
如果我想用“cow”代替“keyword”这个词,预期的结果应该是:
<div>
<span>
This cow should be replaced.
</span>
<span class="ignore">
this keyword should be ignored.
</span>
<span>
This cow should be replaced.
<span class="ignore">
this keyword should be ignored.
</span>
</span>
<span class="ignore">
this keyword should be ignored because of class name.
<span>
this keyword should also be ignored because it's a child of an ignored element.
</span>
</span>
</div>
到目前为止,我想出的最简单的逻辑是 1.递归检查每个子节点 和 2.要么替换节点文本 或者 3. 如果找到“ignore”类,则忽略节点及其子节点。
我仍在尝试找到执行此操作的 jQuery 语法。任何可以帮助我指出正确方向或有任何意见的人,我都将不胜感激。
谢谢
【问题讨论】:
-
感谢您提供快速而优雅的解决方案,Johny。它工作得很好。我将您的“#ct span”更改为“#ct *”以使其更通用。
标签: javascript php jquery text filter