创建一组jquery对象的最简单方法
是的,我所做的就是
A.add(B).add(C).add(D).show()
虽然 A、B、C、D 是 jQuery 对象。我想知道是否有更简单的方法可以做到这一点? 我已经尝试了以下所有方法,但没有结果:
$(A,B,C,D).show()
A.add(B,C,D).show()
欢迎所有建议!
添加以澄清问题:
“.show()”部分仅用于演示。我只是想知道如何创建一组 JQuery 对象,例如 $('p') 创建一组 p 标签。
在我的真实案例中,我使用
$([A,B,C,D]).each(fn)
而不是 .show() (我想知道为什么这有效?) 显然
$([A,B,C,D]).each(fn)
$('p').each(fn)
两者都有效。但
$([A,B,C,D]).show() //--doesn't work
$('p').show() //--works
只有第二行有效。有谁知道它们之间的区别? (我只是认为它们是相同的,然后在我的问题中做了一些纠结)
Yeah, the way I was doing is
A.add(B).add(C).add(D).show()
While A,B,C,D are jQuery objects. I wonder if there's such a simpler way to do this out there?
I've tried all the following approaches, but no results:
$(A,B,C,D).show()
A.add(B,C,D).show()
All suggestions are welcome!
Addition to clarify the question:
The part ".show()" is just for demonstration. I just wanted to know how could I create a set of JQuery object like $('p') create a set of p tag.
In my real case, I used
$([A,B,C,D]).each(fn)
instead of .show() (And I wonder why this worked?)
It's obviously that
$([A,B,C,D]).each(fn)
$('p').each(fn)
both work. But
$([A,B,C,D]).show() //--doesn't work
$('p').show() //--works
Just the second line works. Does anyone know the diffrence between them ?
(I just thought they're the same, then made a bit of tangle in my question)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
该解决方案不使用选择器,而是使用名为 $.each 的 jQuery 方法,该方法采用数组并迭代它。传递的数组是一组 jQuery 对象。
$(this)
指的是每次迭代的 jQuery 对象。演示: http://jsfiddle.net/SCjMc/1/
关于 $() 工作原理的其他事实:
$(element)
是jQuery(element)
的快捷方式。jQuery()
方法接受一组不同的参数:的描述每种类型的参数都可以在此链接中找到。
参数类型之一是“elementArray”。对此的描述是:
问题是,当您使用 jQuery 选择一个元素时,它会返回一个 jQuery 对象,而不是直接返回 DOM 元素。因此,这将不会返回任何元素:
要返回 DOM 元素而不是 jQuery 对象,您必须访问 jQuery 对象的
0
位置的属性。如下:$("element")[0]
。这就是为什么这个会起作用:Instead of using a selector this solution uses a jQuery method called $.each which takes an array and iterates over it. The array passed is a set of jQuery objects.
$(this)
referes to the jQuery objects being iterated on each time.demo: http://jsfiddle.net/SCjMc/1/
Other facts about how $() works:
$(element)
is an shortcut forjQuery(element)
. ThejQuery()
method accepts a different set of parameters:The description for each type of parameter can be found in this link.
One of the type of parameters is "elementArray". The description for this is:
The catch is that when you use jQuery to select an element this returns a jQuery object and not a DOM Element directly. Therefore this will not return any elements:
To return a DOM Element instead of a jQuery object you have to access the property in the position of
0
of the jQuery object. As follows:$("element")[0]
. And that is why this will work:这是我能想到的最短版本:
它传递一个元素数组,而不是 jQuery 对象。仅当
B
、C
和D
是单元素数组时才有效。http://jsfiddle.net/nrabinowitz/Jb6VD/1/
Here's the shortest version I could think of:
This passes in an array of elements, rather than jQuery objects. Only works if
B
,C
, andD
are single-element arrays.http://jsfiddle.net/nrabinowitz/Jb6VD/1/
假设您有原始 DOM 元素(不是 jQuery 对象,例如
$('#abc')
或$('.abc')
),无需使用add
:请参阅
$(.. .)
函数了解详细信息。如果您确实想要类似
$(A,B,C,D)
的内容,其中A,B,C,D
是 jQuery 对象,那么唯一真正的方法是推出自己的功能。这可以解决问题:
工作示例: http://jsfiddle.net/Jb6VD/5/
Assuming you have raw DOM elements (not jQuery objects such as
$('#abc')
or$('.abc')
), there's no need to useadd
:See the documentation of the
$(...)
function for details.If you really want something like
$(A,B,C,D)
whereA,B,C,D
are jQuery objects, then the only real way is to roll your own function.This does the trick:
Working example: http://jsfiddle.net/Jb6VD/5/
要获得由多个 jQuery 对象(在某种程度上“只是”数组)合并而成的集合,您可以使用
$.merge
:$.merge
只能工作在一对数组上,因此在大量 jQuery 对象上使用它会变得非常烦人......在这种情况下,您可以使用$().get()
来获取“原始”数组并将它们连接
在一起:To get the set resulting from the union of several jQuery objects (which are "just" arrays in a way), you can use
$.merge
:$.merge
only works on a pair of arrays, so using this on a large amount of jQuery objects would get very tiresome... in this case, you can use$().get()
to obtain the "raw" array andconcat
them together: