1

選択したノードを重要な構造でラップしようとしています。この場合、ノードは(必然的に)直接の子孫にはなりません。wrap()ワンライナーで使うには不十分のようです。

元のHTMLのreplaceWithプレースホルダー構文を使用して、を使用して動作させることができました。replace以下は正常に機能し、jQueryプラグインで簡単にラップできます。しかし、もっと良い解決策があるかどうか私は興味があります。

var template = '<div>\
                  <div>...</div>\
                  <div>{{original}}</div>\
                  <div>...</div>\
                </div>';

$('p').each(function() {
  var o = $(this).html();
  $(this).replaceWith(template.replace('{{original}}', o));
});
4

1 に答える 1

1

より複雑なテンプレートについては、jQueryテンプレートプラグインを調べてください。まだベータ版ですが、多くの柔軟性を提供するはずです。私の元のソリューションはさらにコンパクトですが、このjQuery.tmpl()関数を使用することは実行可能なソリューションに近いです。

より単純なケースでは、上記のように、次のように2行のプラグインでラップする方がよいでしょう。

$.fn.templateWrap = function(template) {
  return this.each(function() {
    var o = $(this).html();
    $(this).replaceWith(template.replace('{{original}}', o));
  });
}

次に、次を使用して呼び出します。

$('#target').templateWrap('<div>...{{original}}...</div>');

jquery.templatewrap.min.jsをダウンロードします)

于 2011-03-01T22:56:21.270 に答える