1

我有一组元素,我希望将它们放入一个 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​&lt;/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​&lt;/button>​
1 
1 
asdf 
1 
[p.nonVendor unselectable, selector: "", context: undefined, jquery: "1.9.1", constructor: function, init: function…]
4

2 回答 2

3

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

content = content.add($(value));
于 2013-10-26T15:39:03.297 回答
0

要创建一个包含两个对象的 javascript 数组contentadditionalContent下面的代码将起作用:

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

几点:

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

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

编辑 - 连接 Jquery 选择器:

正如 wdosanjos 指出的那样,以下将起作用 -.each不需要:

content = content.add(additionalContent);

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

content.add(additionalContent).addClass('sausage');
于 2013-10-26T15:54:31.137 回答