带有 $(this) 的 jQuery 多重选择器
Posted
技术标签:
【中文标题】带有 $(this) 的 jQuery 多重选择器【英文标题】:jQuery multiple selector with $(this) 【发布时间】:2013-07-04 13:54:29 【问题描述】:有什么办法可以做到这一点:
$(this, '#foo')
我也想选择“this”元素和#bar。
假设选择两个 ID,就像 '#foo, #bar'
一样简单,但是当我希望这两个 ID 中的一个成为“this”时,我无法让它工作。
【问题讨论】:
【参考方案1】:你的方法有问题
$(this, '#foo')
以上行将在id
设置为foo
的元素内搜索this
,这不是您想要的。
解决方案
您可以为此使用add()
:
var $el = $(this).add('#foo')
现在$el
将包含$(this)
和$("#foo")
,您可以对其执行操作。
有关所用方法的更多信息
add("selector")
【讨论】:
谢谢。我知道我的示例代码不起作用,我认为它在this
中选择了 #foo
。所以这有点令人惊讶,反之亦然。我把它放在这里,因为我觉得它最接近多 ID 选择。【参考方案2】:
您使用的方法的问题:
$(this, '#foo')
JS Fiddle demo.
这是一个上下文感知选择,在#foo
元素中搜索this
(并且与$('#foo').find(this)
相同),这在jQuery 中是有效的,尽管我认为这有点毫无意义(鉴于你已经引用了this
(我假设,如果不是this
可能是window
)。
老实说,我不完全确定为什么选择器“工作”,除非给定 this
节点 jQuery 简单地丢弃上下文,因为它已经“知道”this
节点在哪里并且已经参考。
添加到选择:
$(this).add('#foo');
JS Fiddle demo.
或者(相反):
$('#foo').add(this);
JS Fiddle demo.
参考资料:
add()
。
find()
。
jQuery selector-context。
【讨论】:
【参考方案3】:你可能还在寻找的是
$('#foo', this)
它将在$(this)
中找到foo
id 对象
【讨论】:
以上是关于带有 $(this) 的 jQuery 多重选择器的主要内容,如果未能解决你的问题,请参考以下文章