首页 > 解决方案 > Jquery 部分追加

问题描述

我想将 28 div 添加到我的主要 html 元素宽度数据和内部的特定 css 中。2 次 x 14 格。

我不明白为什么会这样并在我的页面中显示 28 div:

createCards: function() {
var cards = [];

for(var i = 1; i <= 14 ; i++) {
  var card = $('<div>').addClass('carte cache');

  card.css('background-position', '0 ' + app.backgroundTop + 'px').data('id', i);
  cards[i] = card;

  app.backgroundTop -= 100;
}
app.backgroundTop = 0;
for(var i = 15; i <= 28 ; i++) {
  var card = $('<div>').addClass('carte cache');

  card.css('background-position', '0 ' + app.backgroundTop + 'px').data('id', (i-14));

  cards[i] = card;

  app.backgroundTop -= 100;
} 
$('main').append(cards);

这不是:

var cards = [];

for(var i = 1; i <= 14 ; i++) {
  var card = $('<div>').addClass('carte cache');

  card.css('background-position', '0 ' + app.backgroundTop + 'px').data('id', i);
  cards[i] = card;
  cards[i+14] = card;

  app.backgroundTop -= 100;
}
$('main').append(cards); 

我试试这个,我也尝试将每个 var 卡添加到一个特定的数组并在之后使用 concat 函数,但它总是相同的结果。我的页面上只有 14 个 div,而当我控制台记录数组时我有 28 个元素。

有任何想法吗 ?

标签: javascriptjqueryarraysappend

解决方案


在第二个示例中,您将cards[i]and分配cards[i+14]给同一个 jquery 创建的 div 实例。这将作为同一个对象注册到 jquery,所以它只会被添加一次。$('<div>')您需要为数组的每个索引单独声明,或者card.clone()如果您真的希望它们相同,则使用第二个。

认为它们是同一个元素,一个元素只能在一个地方。


推荐阅读