我想使用 jQuery 对元素的内容进行编码,但找不到自动执行此操作的函数,因此我尝试创建一个按内容执行此内容的函数。
例如,如果我有以下 HTML 元素:
<div>
text&
<p class="foo">barbaz8798++xyzzy</p>
<span>1<5</span>
</div>
期望的输出是:
<div>
text%26
<p class="foo">barbaz8798%2B%2Bxyzzy</p>
<span>1%3C5</span>
</div>
我只需要对这些元素的内容进行编码。我怎样才能做到这一点?
我想到的一种方法是通过将所有内容包装到包装器中然后调用 wrapper.find("*")
来选择元素,然后用 element 替换它们的文本。 text(encodeURIComponent(element.text()))
,请问还有更好的方法吗?
最佳答案
您可以遍历容器元素(示例中的 div
)的内容,更改所有文本节点的内容
//need to use a more specific selector for the div
$('div').find('*').addBack().contents().each(function() {
if (this.nodeType == Node.TEXT_NODE) {
this.nodeValue = encodeURIComponent(this.nodeValue.trim());
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
text&
<p class="foo">barbaz8798++xyzzy</p>
<span>1<5</span>
</div>
关于javascript - 使用 jQuery 编码元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31155808/