0

私は以下を使用しています:

 var topWrapper = $('<div />')
    .addClass( 'table-top-wrapper ui-corner-top ui-body-'+o.wrapperTheme )
    .grid({ grid: this.options.grid })
    .append(container)
    .insertBefore(table);

を呼び出す前xに、これに子を追加する必要があります。div.grid

チェーン内に新しく作成されたdiv要素に子divの数をx=3追加する方法はありますか?x連鎖可能なもののようなものfor-loop

洞察をありがとう!

4

3 に答える 3

4

要素の配列を作成して、以下を追加できます。

var x = 3;

var topWrapper = $('<div />')
.addClass( 'table-top-wrapper ui-corner-top ui-body-'+o.wrapperTheme )
.append($.map(new Array(x), function(){
  return $('<div/>');
}))
.grid({ grid: this.options.grid })
.append(container)
.insertBefore(table);
于 2012-09-28T19:36:20.663 に答える
2

次のような独自のjQuery拡張機能を作成できます。

$.fn.appendMultipleChildren = function(child, repeat) {
    var $this = $(this);
    for (var i = 0; i < repeat; i++) {
        $this.append(child.clone());
    }
    return $this;
}

その後、電話

 var topWrapper = $('<div />')
    .addClass( 'table-top-wrapper ui-corner-top ui-body-'+o.wrapperTheme )
    .grid({ grid: this.options.grid })
    .appendMultipleChildren($('<div />'), 3)
    .append(container)
    .insertBefore(table);

編集-そしてここにjsfiddleの例があります:http://jsfiddle.net/eJGxm/

于 2012-09-28T19:32:45.923 に答える
1

これを行う最も効率的な方法は、それらを1つの文字列にアセンブルしてから、を呼び出すことjQuery.htmlです。ただし、これによってループがチェーン可能になるわけではありません。本当にやりたい場合は、関数でラップすることができます。

topWrapper = $('<div />')
    .addClass( 'table-top-wrapper ui-corner-top ui-body-'+o.wrapperTheme )
    .html((function(){
       var markup = '';
       for (var i =0; i < 3; i++) {
         markup .= '<div></div>';
       }
       return markup;
    })())
    .grid({ grid: this.options.grid })
    .append(container)
    .insertBefore(table);

個人的には、topWrapperを呼び出す前にループを実行するよりも読みにくいと思います。

于 2012-09-28T19:28:26.430 に答える