4

リストをループしていて、リスト要素ごとにjQuery Mobile ラジオ ボタンを作成する必要があります。すべてのラジオ ボタンは 内に配置する必要があり、div class="radio-controls"完成すると DOM に追加されます。

ここに私がしようとしているものがあります:

    var label = $("<label/>").attr("data-" + $.mobile.ns + "iconpos", "notext");
      barrel = [];

    for (var i = 0; i < myListitems.length; i += 1) {
      var item = myListitems[i];

      barrel.push(
          $("<input type='radio' name='radio-" + this.uuid + "' value='radio-" + this.uuid + "-" + i +"' />" )
            .wrap(label)
            .checkboxradio()
        );
      }
    }

ループの後、追加する必要がある jQuery 配列があります。

しかし、makeArrayは失敗して戻ります

context is undefined

jQuery内

 if ( ( context.ownerDocument || context ) !== document ) {

これは、ドキュメントから選択された要素で構成されていない配列が原因であると言われています(私のものはまだDOMに追加されてdocument.createFragementいません)が、jQueryオブジェクトをフラグメントに追加できないと思うため、機能しません。これを行う:

 var fragment = document.createDocumentFragment();

 // in my loop
 bullet = $("<input type='radio' name='radio-" + this.uuid + "' value='radio-" + this.uuid + "-" + i +"' />" )
     .wrap(label)
     .checkboxradio()
 fragment.appendChild( bullet );

 // after loop, add to document 
 fragment[o.bulletsPos === "top" ? prependTo : appendTo](el);

このエラーを返します:

 Value does not implement interface Node.

質問: jQuery アイテムのコレクションを生成し、これを DOM に追加する方法はありますか? もちろん、すべての項目を 1 つずつ挿入することもできますが、全体を動的に作成して 1 回挿入したいと考えています。

手伝ってくれてありがとう!

4

1 に答える 1

5

これを次のサンプル コードに追加することができました。

var collection = [];
var elem;

for (var i = 0; i < 10; i+=1) {
    elem = $("<span />").attr("class","foo-"+i).text("hello");
    collection.push(elem);
}
console.log(collection);
// the "context" error
//$(collection).appendTo(document.body);
$(document.body).append(collection);

フィドルのデモ: http://jsfiddle.net/558qq/3/

于 2013-06-25T15:05:01.677 に答える