jQuery,而不是$(this)以及其他东西(以逗号分隔的列表)

时间:2011-11-05 20:33:58

标签: jquery

在尝试将$(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并且也不要隐藏这个”,你能建议如何修改我的代码来执行此操作吗?非常感谢

2 个答案:

答案 0 :(得分:1)

second argument to jQuery是将在其中搜索选择器的上下文。在您的情况下,您试图在body内找到this元素,这是#nav的内容,并且不太可能有body元素作为后代

另外我假设这只是问题中的一个错字,但是你的第一个例子也不会起作用,因为你错过了body > :not(.test)选择器上的结束语。

根据评论

更新

要从选区中排除this,您可以使用not方法代替:not选择器:

$('body > :not(.test)').not(this).hide();

我认为您的第二行是尝试将.nav-newsthis追加到body,在这种情况下,您希望与not方法相反,即$(".nav-news").add(this).appendTo("body"); 方法3}}:

{{1}}

答案 1 :(得分:1)

此实例中的this表示所选元素应位于“this”内,如在hovered元素内部。

我严重怀疑body的直接孩子现在仍然可以在#nav内吗? :)