2010-04-02 55 views

回答

0

这是实现你要什么样的方式。您正确且高效地使用选择器。

可能如果你维护一个需要被隐藏的标签ID的数组,然后动态地构造你的选择器以便通过ID来查找,那么它会更快一些。 (即使选择器可能更长,这样会更快,通过ID选择非常快)。

但是,优化不是必需的吗?我们正在谈论快速减轻至双倍。一个超级愚蠢的jQuery专业版只会做你所做的事情。

0

该代码看起来很完美;你正在使用:正确可见。

你可以看看jQuery :visible selector help page如果你想知道它究竟是如何工作的,但在几句话就选择可见光元素=)

0

嗯,我能想到的是:

$('[id$="AtBaseLevel"]:visible').hide();

这将匹配其ID在AtBaseLevel结尾的任何元素。请注意,缩短并不意味着速度更快,因为ID查找速度与其速度一样快。基于属性的选择器没有经过优化。

0

你可以这样说:

$("#topperAtBaseLevel, #lowerAtBaseLevel, #midAtBaseLevel").filter(":visible").hide(); 

然而,这会导致所有被隐藏,隐藏元素调用.hide()是好的,什么也没有错,所以它可能仅仅是这样的:

$("#topperAtBaseLevel, #lowerAtBaseLevel, #midAtBaseLevel").hide(); 
+0

感谢超音速回复。 这里如果我们使用find(),主要的id不会被隐藏,所有的内部嵌套元素将被隐藏,这是再次显示的问题。 – jaan 2010-04-02 12:51:51

+0

@jaan - 我没有使用'.find()',我使用'.filter()',它不同:)'.filter()'过滤**匹配的**元素,而不是他们的子元素'.find()'确实。 – 2010-04-02 12:53:35

+0

您在滤镜内部缺少双引号。 – rahul 2010-04-02 12:58:59

相关问题