jquery .add()没有添加html元素

时间:2013-10-26 14:30:48

标签: javascript jquery element add

我有一个元素数组,我希望将它放入一个jquery对象中。 jquery.add()似乎没有在我的jquery对象中添加元素。我有控制台日志显示我添加的内容确实是html元素,但仍然没有添加 我做错了什么?

我的代码:

console.log('iterating')
console.log(content)
//add the content into the jquery item, and then we can load it into the qtip
_.each(additionalContent, function(value, element, list){
console.log('adding')
console.log(value)
console.log(content.length)
content.add(value) //trying content.add($(value)) gives the same result/output
console.log(content.length)
})

console.log('asdf')
console.log(content.length)
console.log(content)

====================== 打印以下内容:

iterating 
[p.nonVendor unselectable, selector: "", context: undefined, jquery: "1.9.1", constructor: function, init: function…]
adding 
<button class type=​"button" data-loading-text=​"OK" style=​"text-align:​ center;​ font-style:​ normal;​ font-variant:​ normal;​ font-weight:​ normal;​ font-size:​ 13px;​ line-height:​ normal;​ font-family:​ arial;​ color:​ rgb(255, 255, 255)​;​ background-color:​ rgb(0, 0, 255)​;​ z-index:​ 2;​ display:​ inline;​ left:​ auto;​ top:​ auto;​ width:​ 35.77777862548828px;​ height:​ 17.777777671813965px;​">​OK​</button>​
1 
1 
adding
<button class type=​"button" data-loading-text=​"Cancel" style=​"text-align:​ center;​ font-style:​ normal;​ font-variant:​ normal;​ font-weight:​ normal;​ font-size:​ 13px;​ line-height:​ normal;​ font-family:​ arial;​ color:​ rgb(255, 255, 255)​;​ background-color:​ rgb(0, 0, 255)​;​ z-index:​ 2;​ display:​ inline;​ left:​ auto;​ top:​ auto;​ width:​ 35.77777862548828px;​ height:​ 17.777777671813965px;​">​Cancel​</button>​
1 
1 
asdf 
1 
[p.nonVendor unselectable, selector: "", context: undefined, jquery: "1.9.1", constructor: function, init: function…]

2 个答案:

答案 0 :(得分:3)

.add()不会更改原始var,因此您需要将结果分配回“content”,如下所示:

content = content.add($(value));

答案 1 :(得分:0)

要创建包含contentadditionalContent中对象的javascript数组,以下代码将起作用:

elements = [];
content.each(function(index, value) {
    elements.push(value);
});
additionalContent.each(function(index, value) {
    elements.push(value);
});

有几点:

  • 每个函数的第一个参数将加载一个索引(类似于使用for循环:for(int index = 0; index&lt; content.length; index ++),第二个参数是元素
  • jQuery方法.add用于处理选择器而不是对象集合,并且表现不像代码所需的方式

然后可以在对象中使用elements集合 - 这是您需要的吗?

编辑 - 连接Jquery选择器:

正如wdosanjos所指出的,以下内容将起作用 - 不需要.each

content = content.add(additionalContent);

将css类香肠添加到两个选择器中的所有元素:

content.add(additionalContent).addClass('sausage');