3

这个问题有点两部分。首先,标题问题。这是我所拥有的:

// Report all of the parents
$(this).parents().each(function(i){

    // Collect the parts in a var
    var $crumb = '';

    // Get the tag name of the parent
    $crumb += "<span class='tagName'>"+this.tagName+"</span>";

    // And finally, report it
    $breadcrumbs.prepend($crumb);

});

不幸的是,这不包括实际元素本身,只包括父母。有没有办法说“这个和父母”这样的话?

现在,第二个问题。如果我无法添加到堆栈中,我将如何将该函数的内容分成另一个函数,同时保留它的“this”能力?会不会是这样的:

// Function to report the findings
function crumble(e){

    // Collect the parts in a var
    var $crumb = '';

    // Get the tag name of the parent
    $crumb += "<span class='tagName'>"+this.tagName+"</span>";

    // And finally, report it
    $breadcrumbs.prepend($crumb);

};
$(this).parents().each(crumble());

在此先感谢您的时间!

4

1 回答 1

7

对于第一个问题,可以使用.andSelf方法:

$(this).parents().andSelf().each(function () {
  // ..
});

您必须注意一些事情,该$crumb变量是local-scoped,因此它将在您each循环的每次迭代中初始化。

对于您的第二个问题,是的,您可以定义一个完成回调工作的函数each,您只需传递对它的引用,而不是调用它(删除括号):

$(this).parents().each(crumble);
于 2010-04-01T05:20:07.070 回答