我们如何用javascript $(this).parent('p')写这个

时间:2011-10-26 01:52:07

标签: javascript jquery selector

如何在普通javascript中编写此选择器

$(this).parent('p')

4 个答案:

答案 0 :(得分:5)

由于jQuery .parent(selector)函数只检查直接父级,因此可以创建如下函数:

function getParent(o, tag) {
    if (o.parentNode.tagName.toLowerCase() == tag.toLowerCase()) {
        return(o.parentNode);
    } else {
        return(null);
    }
}

然后,你可以这样称呼:

getParent(this, 'p');

或者,如果你想让它返回一个类似于jQuery的数组,你可以使用它:

function getParent(o, tag) {
    var results = [];
    if (o.parentNode.tagName.toLowerCase() == tag.toLowerCase()) {
        results.push(o.parentNode);
    }
    return(results);
}

然后,你可以调用它(并获得一个数组):

getParent(this, 'p');

如果你想要返回与标记类型匹配的所有祖先的jQuery .parents(selector)函数的等效函数,你可以使用它:

function getParents(o, tag) {
    var results = [];
    while ((o = o.parentNode) && o.tagName) {
        if (o.tagName.toLowerCase() == tag.toLowerCase()) {
            results.push(o);
        }
    }
    return(results);
}

而且,你会这样称呼它:

getParents(this, 'p');

答案 1 :(得分:3)

var p = this.parentNode;
var result = []; // empty
if (/p/i.test(p.nodeName))
   result = [p]; // return in jQuery array format (or not)

答案 2 :(得分:1)

此功能应该这样做:

 var getAncestorOfTagType = function (e, type) {
    while (e.parentNode && e.tagName != type)
      e = e.parentNode;
    return e; 
 }

然后

var p = getAncestorOfTagType(this, 'P')

答案 3 :(得分:1)

( node = theObject.parentNode ).tagName == "P" ? node : false;