使用:不是选择器与$(this)

时间:2011-03-09 14:13:04

标签: javascript jquery

我有以下行正常工作

$("#myDiv img:not(:eq(0))").hide();

我想写一个类似的行,但使用“this”。所以:

$(this":not(:eq(0))").hide();

但这不起作用......任何出错的想法?​​

5 个答案:

答案 0 :(得分:6)

尝试.not(selector) http://api.jquery.com/not/

答案 1 :(得分:5)

其他答案遗忘了一个重点 - this最有可能在某些事件中回调,并且可能是单个元素,因此它始终选择中的第一个元素(:eq(0))。

因此,以下每个等效代码段永远不会隐藏任何内容

$(this).not(':eq(0)').hide();
$(this).filter(':gt(0)').hide();
$(this).slice(1).hide();

我只是猜测OP的意图,但代码最有可能是:

if ($(this).index('#myDiv img') > 0) $(this).hide();

答案 2 :(得分:3)

这样的事情应该有效:

$(this).not(":eq(0)").hide();

答案 3 :(得分:2)

您好像应该使用:gt()选择器

  

描述:选择匹配集中索引大于索引的所有元素。

尝试:

$(this).find(":gt(0)").hide();

或:

$(":gt(0)", this).hide();

不是:not(:eq(0))写作:gt(0)的笨重方式吗?

答案 4 :(得分:0)

$($(this).selector + ":not(:eq(0))").hide();