2

好的,所以我想问一个关于对象数组的简单 jQuery 问题。

如果我从一个 html 页面获取所有元素(例如所有段落)并将它们存储在一个数组中,我如何访问其中一个来处理它?

例如,假设我有这个 html:

<!DOCTYPE html>
<html>
    <head>
        <title></title> 
    </head>
    <body> 
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    <p>Paragraph 3</p>
    <button id="myButton">Click here</button>

    <script src="jquery-1.6.2.min.js"></script>
    <script src="script.js"></script>
    </body>
</html>

这是我的 script.js:

$(document).ready(function(){
    $("#myButton").click(function(){

        var $paragraphs = $("p"); 
        $paragraphs.detach();  //Works fine, removes all elements
        //$paragraphs[0].detach();  //Doesn't work!

    }); 
});

我试图在数组的第一个元素上调用 detach,这样我就可以删除第一段,但它似乎不起作用......

有没有办法在不使用 id 属性的情况下访问第一段?

4

4 回答 4

3

您可以使用:eq选择器选择第一个元素:

$("p:eq(0)").detach();

这将只分离第一个元素。

您可以改用.eq()function,它可能会提供更好的性能:

$("p").eq(0).detach();
于 2012-12-18T23:50:24.270 回答
0

$paragraphs[0]将 jquery 对象解包到 html 元素中,这就是您无法访问的原因detach(jquery 函数)。

您应该遍历段落,或重新包装对象。这应该工作

var detachParagraph = $paragraphs[0];
$(detachParagraph).detach();
于 2012-12-18T23:48:17.033 回答
0

试试这个

$($paragraphs[0]).detach();

当您将索引传递给 jQuery Object List$paragraphs[0]时,该对象将成为 DOM 对象

var $paragraphs = $("p"); 

var domObj = $paragraphs[0];

var jqueryObj = $(domObj);

因此,您需要将其再次包装为 jQuery Object ..

相反,您可以使用:eq()选择器

var $paragraph = $("p:eq(0)");  // Selects only the first para
                                 // which is a jQuery Object
$paragraph.detach();   // This works too
于 2012-12-18T23:49:18.993 回答
-1

您可以使用过滤函数: $("p").filter(function(index){ if(index==0){ $(this).detach(); } )};

于 2012-12-19T00:04:56.440 回答