带有 $(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")

文档:http://api.jquery.com/add/ 它的作用:将元素添加到匹配元素的集合中。

【讨论】:

谢谢。我知道我的示例代码不起作用,我认为它在 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 多重选择器的主要内容,如果未能解决你的问题,请参考以下文章

jquery 选择器

jQuery选择器实例

如何从剑道窗口外调用 jquery 选择器?

jQuery选择器之特殊选择器this

jquery之选择器

Jquery $('class', this) 选择器不起作用