在尝试将$(this)放入逗号分隔列表时,试图弄清楚我做错了什么,例如....
这有效....
$('#nav').hover(function(){
$('body > :not(.test)).hide();
$('.test').appendTo('body');
)};
但是当我添加'this'时它不起作用......
$('#nav').hover(function(){
$('body > :not(.test)', this).hide();
$('.test', this).appendTo('body');
)};
我试图说“不要隐藏.test并且也不要隐藏这个”,你能建议如何修改我的代码来执行此操作吗?非常感谢
答案 0 :(得分:1)
second argument to jQuery是将在其中搜索选择器的上下文。在您的情况下,您试图在body
内找到this
元素,这是#nav
的内容,并且不太可能有body
元素作为后代
另外我假设这只是问题中的一个错字,但是你的第一个例子也不会起作用,因为你错过了body > :not(.test)
选择器上的结束语。
更新
要从选区中排除this
,您可以使用not
方法代替:not
选择器:
$('body > :not(.test)').not(this).hide();
我认为您的第二行是尝试将.nav-news
和this
追加到body
,在这种情况下,您希望与not
方法相反,即$(".nav-news").add(this).appendTo("body");
方法3}}:
{{1}}
答案 1 :(得分:1)
此实例中的this
表示所选元素应位于“this
”内,如在hovered元素内部。
我严重怀疑body
的直接孩子现在仍然可以在#nav
内吗? :)