3

私は次のhtmlを持っており、javascriptでラップするか、すべてのliをdivでjqueryしたいと考えています(liの数は定義されていません)

<div class='example1'>
  <div class='example2'>
  <h1>Test</h1>
  <div class='example3'>
  <li></li>
  <li></li>
  ...
  <li></li>
  <li></li> 
</div>

結果は次のようになります

<div class='example1'>
  <div class='example2'>
  <h1>Test</h1>
  <div class='example3'>
  <div class='lis'>
    <li></li>
    <li></li>
    ...
    <li></li>
    <li></li>
  </div>    
</div>

既存のhtmlに他に何も追加できません:(

手伝ってくれませんか?

4

3 に答える 3

8

wrapAllを使用できます:

$('li').wrapAll('<div class=lis></div>');

しかし、HTML の基準では、LI要素は 、ULOLおよびMENUでは許可されないことが指定されていDIVます。

デモンストレーション

于 2013-01-11T09:02:44.423 に答える
1

これを使って :

(function($) {
$.fn.customWrap = function(wrapper) {
    if (!this.length) return this;
    var wrap = $(wrapper),
        sel = this.selector || this.get(0).nodeName.toLowerCase();
    return this.each(function() {
        var more = $(this).next(sel).length;
        console.log(this,more);
        $(this).replaceWith(wrap).appendTo(wrap);
        if (!more) wrap = $(wrapper);
    });
}
})(jQuery);

そして次のように呼び出します:

$(function() {
$('li').customWrap('<div class="lis"></div>');
});

または、 jQuery wrapAllを使用できますが、これはページ内のすべてをラップしli ます..連続したものではありません..

ここ(wrapAllを使用)ここ(カスタム関数)の違いを参照してください

于 2013-01-11T09:29:21.990 に答える
0

$.wrap()を使用して、一致する要素のセットを別の要素内にラップできます

于 2013-01-11T09:04:57.610 に答える