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?当然,我可以一个接一个地插入每个项目,但我想创建整个动态并插入一次。

感谢帮助!

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 回答