jQuery で outerHTML() を実現する
jQuery で、innerHTML じゃなくて outerHTML を実現する方法があった。
jQuery.fn.outerHTML = function(s) { return (s) ? this.before(s).remove() : jQuery("<p>").append(this.eq(0).clone()).html(); }jQuery: outerHTML – Yelotofu
わかりやすく書くとこんな感じか。
jQuery.fn.outerHTML = function(s) { if (s) { this.before(s); # 自分の直前に挿入。 this.remove(); # そして自分自身を削除。 return this; } else { var dummy = jQuery("<p>") # ダミーの <p> を作成。 var elem = this.eq(0); # 最初の要素を取り出し、 dummy.append(elem.clone()); # そのコピーを <p> に挿入。 return dummy.html(); # <p> の innerHTML を返す。 } }
なるほどねー。勉強になった。