用另一个元素包裹一个元素,保留对包装的引用?

Phr*_*ogz 8 javascript jquery

jQuery wrap()方法不使用您创建的元素进行换行,而是复制:

var $orig = $('p'); // some existing element
var $wrap = $('<div>').css({border:'1px solid red'});
$orig.wrap($wrap);
$wrap.append('<p>SMOKE YOU</p>'); // does not appear after the original element
Run Code Online (Sandbox Code Playgroud)

如果你不相信,你可以在这里看到上面的实时版本:http://jsfiddle.net/QRmY6/

如何最好地创建非平凡的动态内容来包装现有节点,同时保留对内容周围的包装器的引用

Phr*_*ogz 4

我想出的最佳替代方案是:

// Technique 1 - swap it out and then embed it via append
var $wrap = $('<div>').css({border:'1px solid red'});
$orig.replaceWith($wrap);
$wrap.append($orig);

// Technique 2 - create it inline and then modify it
var $wrap = $orig.wrap('<div>').parent().css({border:'1px solid red'});
Run Code Online (Sandbox Code Playgroud)

  • @ThiefMaster 我对你的肠胃状况表示歉意。:) 我们中的一些人选择在变量前加上 `$` 作为迷你匈牙利表示法的提示,表明该变量保存的是 jQuery 对象而不是 DOM 对象。 (5认同)