我有以下代码:
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并中断,但它不起作用。
还有其他建议吗?
答案 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/