检查$(this)是否具有在数组中指定了类或id的父项

时间:2010-02-16 19:42:11

标签: javascript jquery arrays if-statement

首先,在“测试”一段时间之后我不得不说,stackoverflow非常酷!

我的问题: 我想检查$(this)是否有任何在js-array中指定了类或id的父类。

到目前为止,我用“eval”做了这个,但Andy E.只是说服了我,放弃“eval”会更好。但是我不知道在这种情况下如何做到这一点。

以下是我的所作所为:

var testthis = '!(($(this).parents("'+<MY_ARRAY>.join('").length > 0 || $(this).parents("')+'").length > 0)';
if (eval(testthis)) {
    ....
}

如果有人善意回答我的问题,我必须道歉,我在接下来的几个小时内无法阅读(评论或评价)他/她的答案。遗憾!

2 个答案:

答案 0 :(得分:2)

试试这个,不需要评估:

if(!$(this).parents(<MY_ARRAY>.join(', ')).length) {
 //elem has none of those parents
}
在这种情况下,

MY_ARRY包含“.class1”,“。class2”,“#id1”,“#id2”

等内容

或者更慢,但是如果数组只是字符串,你可以检查两种情况:

if(!$(this).parents("." + <MY_ARRAY>.join(', .')).length &&
   !$(this).parents("#" + <MY_ARRAY>.join(', #')).length) {
 //elem has none of those parents
}
在这种情况下,

MY_ARRY包含“class1”,“class2”,“id1”,“id2”之类的内容,但ID可能匹配,因为#class1可能匹配,因此不太理想。

答案 1 :(得分:0)

嗯,你可以迭代$(这个)节点,假设有多个节点,通过向上走树来检查父母,缓存你已经走过的任何路径,但我真的觉得无论你是什么试图在这里做,可能有更好的方法。