将'this'嵌入'has'选择器中

时间:2017-11-20 16:50:13

标签: jquery this selector

我有2个DIV将类“图层”放在另一个上面。 我希望他们在点击特定DIV内部的某个地方时交换可见性。

$('.layer').not(":has(this)").show();
$('.layer:has(this)').hide();

似乎JQuery解释'this'并不是我所期待的......

解决问题的最佳方式是什么?

感谢名单!

1 个答案:

答案 0 :(得分:0)

假设您在this引用DOM元素的上下文中运行此代码,this将是一个对象,因此无法附加到字符串选择器。

在这种情况下,您需要使用has()方法。

$('.layer').has(this).hide();

或者,您可以稍微使用优化逻辑并改为使用closest()

$(this).closest('.layer').hide();

更新

根据您在下面的评论,您还要选择.layer元素除了最近的父this。为此,您可以使用not(),如下所示:

var $layer = $(this).closest('.layer').hide();
$('.layer').not($layer).show();