【问题标题】:jQuery specific Selector QuestionjQuery 特定的选择器问题
【发布时间】:2011-06-29 04:59:05
【问题描述】:

我想知道,我知道 $(selector) 返回一个 jQuery 对象,但是说我在正文中有一系列 div,例如:

<body>
<div> </div>
<div> </div>
<div> </div>
</body>

当我尝试 $("div") 时,jQuery 应该返回一个类似于 div 数组的 jQuery 对象,但是当我尝试指定某个 div 像 $("div")[1] 时,这不是一个 jQuery 对象?如果不是,我知道我不能使用 .css() 那么如何更改需要动态确定的特定 div 的 css?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    $("div") 返回一个 DOM 元素数组。 $("div")[1] 获取页面上的第二个元素,作为 DOM 元素。要将其重新转换为 jQuery 对象,您可以执行 $($("div")[1])

    我不建议你这样做。您可以使用:eq() selector 来获取您想要的 div。

    $("div:eq(1)")
    

    或者,您可以使用.eq() function

    $("div").eq(1)
    

    【讨论】:

    • 打败我。我不确定为什么人们不断打破.eq() 方法,而不是像你展示的那样做选择器。 :head-scratch:
    • @Brad 因为.eq() 名义上比:eq() 快。如果 n 是一个变量,它也更容易处理 - .eq(n):eq(" + n + ") 容易得多
    • 感谢您如此详细而迅速的回复!这非常有效。
    【解决方案2】:

    你需要使用.eqhttp://api.jquery.com/eq/

    $("div").eq(1)
    

    【讨论】:

      【解决方案3】:

      您可以使用 jQuery eq 来获取集合中的 jQuery 包装元素。 即

      $("div").eq(1).css() 
      

      【讨论】:

        【解决方案4】:

        尝试这样做:

         $($("div")[1]).css()
        

        【讨论】:

        • redundant 下显示 Seeredundant
        【解决方案5】:

        $("div")[1] 不是 jQuery 对象。您甚至可以在此页面上的浏览器 JavaScript 控制台上对其进行测试。您可以再次使用$ 函数来制作它,以便可以使用css

        $($("div")[1]).css("hello", "world");
        

        或者,如果您的示例正是您实际需要做的,请改为这样做:

        $("body > div:nth-child(2)").css("hello", "world");
        

        【讨论】:

        • nth-child.eq(n)$($()[n]) 不同
        • @Alnitak:我从来没有说过它是......但在示例中,OP 在&lt;body&gt; 下有一些&lt;div&gt;s。因此:“或者,如果您的示例是您实际需要做的事情,请改为这样做:
        • 目的是确保人们不会误解您的答案
        • 为什么必须相同才能成为有效的选择器?
        猜你喜欢
        • 2010-10-09
        • 1970-01-01
        • 2011-04-04
        • 2011-10-31
        • 2010-12-01
        • 2010-11-25
        相关资源
        最近更新 更多