Jquery部分追加

时间:2018-06-16 19:18:56

标签: javascript jquery arrays append

我想在我的主要html元素宽度数据和特定的CSS里面添加28 div。 2次x 14 div。

我不明白为什么会这样,并在我的页面中显示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卡添加到spécific数组并使用concat fonction但是它总是相同的结果。我的页面上只有14个div而我在控制台登录数组时有28个元素。?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

把它想象成它们是同一个元素,一个元素只能在一个地方。