これはそれほど珍しいことではないと思うので、ここで検索しましたが、必要な適切な方法が見つかりません。
基本的に、特定の要素の下の文字列を置き換えたい - pre
。
- ソースHTML文字列
- div でラップする
- jQueryObject に変換 (ラップ)
- 探す
pre
- それぞれの HTMLstring を取得する
pre
- HTMLstrings 内の A から B に置き換えます
pre
新しい HTMLstrings でそれぞれをリファクタリングします- リファクタリングされた 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 でさえかなり機能的なパラダイムですが、これはとても悪いことです。