0

这是代码:

// Each ul that holds the collection of our entities
var lists = ['ul.emails', 'ul.phoneNumbers'];

// Setup the "add" link
var $addLink = $('<a href="#" class="margin-left btn btn-mini add"><i class="icon-plus"></i>label</a>');
var $newLinkLi = $('<li></li>').append($addLink);

$(document).ready(function() {

  // Add link to each list
  $.each(lists, function(index, list) { 
    $(list).append($newLinkLi);
  });

});

但是,只有最后一个ul获得链接。但是,如果我这样做

  $.each(lists, function(index, list) { 
    $(list).append('test');
  });

有用。是什么赋予了?是通过引用传递的吗?

4

3 回答 3

1

追加一个已经存在于 DOM 中的元素只是移动该元素,它不会创建一个新元素。

var lists   = ['ul.emails', 'ul.phoneNumbers'],
    addLink = '<a href="#" class="margin-left btn btn-mini add"><i class="icon-plus"></i>label</a>';

$(document).ready(function() {
    $.each(lists, function(index, list) { 
        var $newLinkLi = $('<li />').append(addLink);
        $(list).append($newLinkLi);
    });
});
于 2013-03-22T01:00:57.737 回答
1

您必须先克隆元素,否则它会在 DOM 周围移动。

$(list).append($newLinkLi.clone());
于 2013-03-22T01:04:01.333 回答
0

您只处理一个element,而不是使用元素字符串表示。

// Each ul that holds the collection of our entities
var lists = ['ul.emails', 'ul.phoneNumbers'];

// Setup the "add" link
var $addLink = '<li><a href="#" class="margin-left btn btn-mini add"><i class="icon-plus"></i>label</a></li>';


$(document).ready(function() {

  // Add link to each list
  $.each(lists, function(index, list) { 
    $(list).append($addLink );
  });

});
于 2013-03-22T01:00:49.767 回答