我有2个DIV将类“图层”放在另一个上面。 我希望他们在点击特定DIV内部的某个地方时交换可见性。
$('.layer').not(":has(this)").show();
$('.layer:has(this)').hide();
似乎JQuery解释'this'
并不是我所期待的......
解决问题的最佳方式是什么?
感谢名单!
答案 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();