这是 jQuery 最基础的概念,意思是 “选择一些元素然后通过它们做一些事” 除一些非标准的选择器外,jQuery 支持大部分的 CSS3 选择器。若要了解完整的选择器参考, 请访问 http://api.jquery.com/category/selectors/.

以下是一些通用选择技术的例子






Note

当你使用 :visible:hidden 伪选择器时, jQuery 会测试元素的真实可见性, 而不是它的CSS的可见性或显示 — 就是说, 如果physical height and width on the page 都大于零,它就可以看见. 然而,这个测试不能与 <tr> 元素一起工作; 在这种情况下, jQuery 检测 CSS display 属性, 如果 它的 display 属性被设置成 none 那就认为这个元素将隐藏。 即使 CSS 将影响它们的视觉渲染,元素也不会被添加到被隐藏的DOM中。 (请看这一章的后面操作小节有关如何创建和增加元素到DOM中的介绍。)

作为参考, 这里的jQuery代码被用于检测此元素是显示还是隐藏,为了清楚也添加了注释:

jQuery.expr.filters.hidden = function( elem ) {
    var width = elem.offsetWidth, height = elem.offsetHeight,
        skip = elem.nodeName.toLowerCase() === "tr";

    // 元素的高度为0,宽度为0, 
    // 并且它不是 <tr>?
    return width === 0 && height === 0 && !skip ?

        // 所以它必须隐藏
        true :

        // 但是如果它拥有高度和宽度值 
        // 并且它不是 <tr>
        width > 0 && height > 0 && !skip ?

            // 所以它必须显示
            false :

            // 如果我们到了这,元素拥有宽度
            // 和高度, 但它也是一个 <tr>,
            // 所以检查显示属性以
            // 确定是否隐藏
            jQuery.curCSS(elem, "display") === "none";
};

jQuery.expr.filters.visible = function( elem ) {
    return !jQuery.expr.filters.hidden( elem );
};

每次你指定了一个选择器,一段代码运行,jQuery 都不会为你做任何的 caching 工作。如果你已经指定了选择器而你又需要重新指定它时,它将在变量中保存选择器,而不是反复的指定它。


Note

Example 3.10, “在变量中保存选择器”, 变量名以一个美元符号开始。不像在其它的语言中,在 JavaScript 中没有特定的指定美元符号 -- 而是使用其它字符 。我们在这里使用它是为了表明变量包含一个 jQuery 对象。这是惯例 -- 一种 匈牙利命名法 -- 这仅仅是惯例,而不是强制性的。

一旦你保存了选择器,你就能在保存的变量中调用 jQuery 方法,就像在原来的选择器中调用一样。

Note

只有当你指定一个选择器后,选择器才会从页面取回元素。如果你添加元素到页面延迟了,你必须重新选择或将它们添加到存储在变量中的选择器中。当 DOM 改变时被保存的选择器不会自动更新。