我认为这并不少见,所以我在这里搜索过,但找不到我需要的足够方法。
基本上,我想替换特定元素下的字符串 - pre
。
- 源HTML字符串
- 用 div 包裹
- 转换(换行)到 jQueryObject
- 寻找
pre
- 获取每个 HTML 字符串
pre
- 在 HTMLstrings 中从 A 替换到 B
pre
用新的 HTML 字符串重构每个- 重构 jQueryObject 或 sourceHTMLstrings
所以,这是我的尝试:
String.prototype.replaceAll = function (org, dest)
{
return this.split(org).join(dest);
};
var wrap = function (data)
{
return '<div>' + data + '</div>';
};
// Data is a string which contains `pre` elements
var $data2 = $(wrap(Data))
.find('pre') //behavior is confirmed to find several `pre`; so far so good
.html(this.html().replaceAll(A, B));
//Uncaught TypeError: Object #<Object> has no method 'html'
或者
.....
var $data2 = $(wrap(Data))
.find('pre') //behavior is confirmed to find several `pre`; so far so good
.html(this.replaceAll(A, B));
//Uncaught TypeError: Object #<Object> has no method 'replaceAll'
基本上,我无法理解每个对象是如何在方法之间传递的。
我也尝试使用each
没有成功的方法。你对此有什么好主意吗?
编辑:
答案是
var $data2 = $("<div/>");
$data2.html(Data).find("pre").html(function(_,h){
return h.replaceAll(A, B);
});
然后 $data2 .....
$data2 = $("<div/>").html(Data).find("pre").html(function(_,h){
return h.replaceAll(A, B);
结果只pre
收集。不是整个文档范围。
我认为这是通过破坏性价值来展示问题的好或坏的例子。
甚至 jQuery 也是非常实用的范例,这太糟糕了。