【问题标题】:adding newly created dom elements to an empty jQuery object将新创建的 dom 元素添加到空的 jQuery 对象
【发布时间】:2011-02-19 09:27:29
【问题描述】:

为什么这在 jQuery 1.4.2 中不起作用?


var $list = $([]);
for(var i=0; i<50; i++) {
    $list.add( $('<div/>', { id: 'jake', class: 'test' }).data('test', { hi: 'hello' }) );
}
alert($list.size()); // 0

谢谢!

【问题讨论】:

标签: javascript jquery arrays object


【解决方案1】:

再次指向参考列表对我有用; 例如$list = $list.add($('

'));

var $list = $([]);
for(var i=0; i<50; i++) {
    $list=$list.add( $('<div/>', { 'id': 'jake'+i, 'class': 'test' }).data('test', { hi: 'hello' }) );
}
alert($list.size()); // 50

【讨论】:

  • 赞成解决我的问题,但我希望有更好的方法(阅读:.append())将项目添加到空集。 Shog9 对similar question 的回答解释了为什么没有。
【解决方案2】:

为什么add 不起作用我不知道,但你可以用push 替换它,因为 jQuery 是一个类似数组的对象,它应该做你想做的事。

【讨论】:

  • 太棒了,我想我也试过了,但显然没有!谢谢。
  • 看起来为了在 $list 上使用 .clone(true),我的 $list 数组需要是一个 dom 节点(例如:$('
    ') 但我没有'不想要一个包含 div,我只想要一个没有父节点的 dom 节点列表。(就像一个数组!)这可能吗?
  • 如果我必须有一个包含 div 我猜这不是世界末日。这只是dom中的额外垃圾。哦,好吧。
  • 在你的例子中,因为每个 div 在被推送到 $list 之前都是单独创建的,所以 $list 中的每个元素实际上都是它自己独立的 jQuery 对象,所以你需要调用 clone on:@ 987654323@,你应该很高兴。
  • 不,你肯定不需要包含 div :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 2019-05-24
  • 1970-01-01
  • 2019-11-02
  • 2011-09-05
  • 1970-01-01
相关资源
最近更新 更多