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

moh*_*eza 2 jquery

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

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

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

  2. arguments.callee: 这是什么?

gna*_*arf 8

$ 是主要的jQuery函数.

$("span:last-child")搜索作为<span>其父级的最后一个子级的任何标记.

发现:

<div><span>some data </span> something else <span>testing</span></div>
Run Code Online (Sandbox Code Playgroud)

它会找到包含testing但不包括的跨度some data.

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

这将隐藏具有<span>最后一个孩子的所有块的全部内容.