满足条件时停止Jquery.map

时间:2013-08-12 06:37:21

标签: javascript jquery

我有以下代码:

var parentEls = node.parents() 
    .map(function () {

        var curParentID = this.getAttribute("id"); 
        var curParentClass = this.getAttribute("class");

        if(curParentID) {
            return this.tagName + "#" + curParentID;
            /*stop the map function from proceeding*/
        } else {
            return this.tagName;
        }
    })
    .get().reverse().join(", ");

上面的代码有助于查找唯一ID的搜索,一旦识别出ID,就会创建xpath。一旦它到达了检索id并且map函数应该停止的点,我该如何停止map函数?我尝试返回false并中断,但它不起作用。

还有其他建议吗?

2 个答案:

答案 0 :(得分:4)

我认为不可能使用.map(),你可能必须在这里使用.each()

var temp = [];
node.parents().each(function () {
    var curParentID = this.getAttribute("id"); 
    var curParentClass = this.getAttribute("class"); 
    if(curParentID){
        temp.push(this.tagName + "#" + curParentID);
        return false;
    } else {
        temp.push(this.tagName);
    }
});
var parentEls = temp.reverse().join(", ");

答案 1 :(得分:1)

   // parentsUntil() doesn't include the element specified by selector, 
   // so you need to add the closest ancestor with id attribute to the collection
   var parentEls = node.parentsUntil('[id]').add( node.closest('[id]') )
        .map(function () {
            return this.id ? '#' + this.id : this.tagName;
        })
        .get().join(", ");

小提琴(已更新):http://jsfiddle.net/SKqhc/5/