いくつかの html 要素があり、その前にいくつかの終了タグを追加したい
tag.before("</div></div>");
そして、いいねの後に適切なタグを追加して再度開きます
tag.after("<div class='one'><div class='two'>");
しかし、それは機能していないようです。タグを作成して自動的に閉じますが、閉じタグはまったく追加しません。
なぜこれが必要なのですか?
いくつかの要素を body の直接の子にする必要があり、html を手動で変更することはできないため、その内部にあるすべてのタグを閉じてから、適切な .classes でそれらを再度開く必要があります
それを行う私の機能は(しかし、とにかくそれが重要かどうかはわかりません)
//function makes element dircet child of 'to' argument. It closes all parents and reopens'em
$.fn.escape = function(to) {
return this.each(function(){
var t = $(this);
var parents = [];
var escaped = false
var actualParent = t.parent();
//div to store cleared from content parents html
var virtualDiv = $('<div class="hide"></div>');
//while not walked to given root parent
while ( !escaped ) {
var parent = actualParent;
if ( parent.is(to) || !parent.length) { //check if there is parent and if its the one we look for
escaped = true;
} else {
parents.push( parent.clone().html('').prependTo(virtualDiv) ); //prepend clone of parent with cleared content to wirtual div
actualParent = actualParent.parent(); //remember actual parent
}
}
//get html from virtual div and remove all closing tags from it
var newOpenTags = virtualDiv.html().replace(/<\/\S+>/g, '');
//basing on tag-type of each parent, generate closing tags
var closeTags = "";
for (var i = 0; i < parents.length ; i++) {
closeTags = closeTags + "</" + parents[i].get(0).tagName.toLowerCase() + ">";
}
//put closing tags before element and put reopen tags after it
t.before(closeTags);
t.after(newOpenTags);
})
}
言い換えると。いくつかの要素の前に終了タグを追加し、その後に開始タグを追加する方法 (自動終了なし)。