2010-09-03 23 views
3

假设我在写一个jQuery扩展方法。该方法应该爬一个元素的祖先树,直到它到达文档的根<html>标记,此时它应该停止。我实现了这个如下所示:jQuery:确定jQuery对象是否为根html标记

$.fn.foo = function() { 

    var $foo = this; 

    while($foo[0] !== $(document).children()[0]) { 
     // do stuff with $foo 
     $foo = $foo.parent(); 
    } 

    // do stuff 

}; 

我的问题是:是否有比$foo[0] !== $(document).children()[0]更好的办法知道是否我已经达到了根<html>标签?

+0

该插件是否也应该使用''元素? – Anurag 2010-09-03 22:40:35

回答

3
$foo.is('html') 

你似乎是reimplementi ng parents(),但。

3

不要拿对第一个孩子,就看是否返回父:

var $foo = $(this); 

while($foo.parent().length > 0) { 
    // do stuff with $foo 
    $foo = $foo.parent(); 
} 

这里有一个working fiddle

1

这是怎么回事?

$.fn.foo = function() { 

    var $foo = this; 

    while($foo[0].tagName != 'HTML') { 
     // do stuff with $foo 
     $foo = $foo.parent(); 
    } 

    // do stuff 

}; 

或者,如果你实际上并不需要遍历,但只希望做的事情,以给定节点的所有祖先,你可以使用。家长()像这样:

$.fn.foo = function() { 

    var $foo = this; 

    $foo.parents().andSelf().each(function() { 
     // do stuff with $foo 
    }); 

    // do stuff 

}; 
相关问题