(“span:last-child”)和arguments.callee做了什么?

时间:2009-05-26 19:27:31

标签: jquery

$("span:last-child").hide("fast", function () {
        $(this).prev().hide("fast", arguments.callee); 
    });

我无法理解代码中的这一点:

  1. ("span:last-child"):这是什么?

  2. arguments.callee:这是什么?

5 个答案:

答案 0 :(得分:8)

$是主要的jQuery函数。

$("span:last-child")搜索任何<span>代码,这些代码是其父级的最后一个子代。

找到:

<div><span>some data </span> something else <span>testing</span></div>

它会找到包含testing但不包含some data的范围。

然后隐藏它发现的那些跨度。隐藏的第二个参数是动画后的回调。该回调转到“前一个”子节点('其他'文本节点),隐藏它并传递“被调用函数”(arguments.callee)作为回调。这使得它成为“递归”功能。

这会隐藏所有具有<span>作为最后一个孩子的块的全部内容。

答案 1 :(得分:7)

答案 2 :(得分:0)

("span:last-child")返回作为其父级的最后一个子元素的所有span元素。 arguments.callee看起来像是试图将函数本身传递给下一个函数。本质上它传递一个函数指针。看起来它的作用是找到span对象,然后递归隐藏所有先前的兄弟。

答案 3 :(得分:0)

span:last-child选择每个范围中的最后一个子元素。

arguments.callee是对它所调用的函数的引用,甚至适用于未命名的函数。

答案 4 :(得分:0)

(“span:last-child”)将匹配一个跨度,它是它父母的最后一个孩子。

arguments.callee是对被调用的“实际”函数的引用。在这种情况下,只是为最先前的兄弟姐妹提供相同的隐藏功能。实际上创建了一个“新的”最后一个跨度。