jQuery 查找和替换字符串
我在网站上的某个地方有一个特定的文本,比如说“lollypops”,我想用“marshmellows”替换所有出现的该字符串。问题是我不知道文本到底在哪里。我知道我可以这样做:
$(body).html($(body).html().replace('lollypops', 'marshmellows'));
这可能会起作用,但我需要重写尽可能少的 HTML,所以我想这样:
- 搜索字符串
- 找到最接近的父元素
- 仅重写最接近的父元素
- 替换它即使在属性中,但不是全部,例如在
class
中替换它,但不在src
中替换它
例如,我会有这样的结构
<body>
<div>
<div>
<p>
<h1>
<a>lollypops</a>
</h1>
</p>
<span>lollypops</span>
</div>
</div>
<p>
<span class="lollypops">Hello, World!</span>
<img src="/lollypops.jpg" alt="Cool image" />
</p>
<body>
在这个例子中,每次出现“ lollypops" 将被替换,只有
I have somewhere on website a specific text, let's say "lollypops", and I want to replace all the occurrences of this string with "marshmellows". The problem is that I don't know where exactly the text is. I know I could do something like:
$(body).html($(body).html().replace('lollypops', 'marshmellows'));
This would probably work, but I need to rewrite as little HTML as I can, so I'm thinking something like:
- search for the string
- find the closest parent element
- rewrite only the closest parent element
- replace this even in attributes, but not all, for example replace it in
class
, but not insrc
In example, I would have structure like this
<body>
<div>
<div>
<p>
<h1>
<a>lollypops</a>
</h1>
</p>
<span>lollypops</span>
</div>
</div>
<p>
<span class="lollypops">Hello, World!</span>
<img src="/lollypops.jpg" alt="Cool image" />
</p>
<body>
In this example, every occurrence of "lollypops" would be replaced, only <img src="...
would remain the same and the only elements that would actually be manipulated would be <a>
and both <span>
s.
Does anybody know how to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您可以这样做:
最好用需要使用合适的类名检查的文本来标记所有标签。
此外,这可能会带来性能问题。 jQuery 或 javascript 一般来说并不适合这种操作。你最好在服务器端进行。
You could do something like this:
It will be better to mark all tags with text that needs to be examined with a suitable class name.
Also, this may have performance issues. jQuery or javascript in general aren't really suitable for this kind of operations. You are better off doing it server side.
你可以这样做:
例如: http://jsfiddle.net/steweb/MhQZD/
You could do something this way:
example: http://jsfiddle.net/steweb/MhQZD/
你可以这样做:
HTML
jQuery
You could do something like this:
HTML
jQuery
下面是我用彩色文本替换一些文本的代码。很简单,获取文本并将其替换为
HTML
标记。它适用于该类标签中的每个单词。Below is the code I used to replace some text, with colored text. It's simple, took the text and replace it within an
HTML
tag. It works for each words in that class tags.为什么你不向字符串容器添加一个类,然后替换内部文本?就像这个例子一样。
HTML:
jQuery:
Why you just don't add a class to the string container and then replace the inner text ? Just like in this example.
HTML:
jQuery: