【问题标题】:Check if given selector matches given object [duplicate]检查给定的选择器是否匹配给定的对象[重复]
【发布时间】:2011-05-12 13:52:08
【问题描述】:

可能重复:
How can I tell whether an element matches a selector?

我一直在为这个我一直在研究的 javascript 框架使用 jQuery,我想知道是否有一种方法可以检查给定的选择器是否与给定的 jQuery 对象匹配。比如:

var divObj = $(document.createElement('div'));
var result = divObj.hasSelector('div');

如果选择器与对象匹配,结果将返回“true”或返回对象。

【问题讨论】:

    标签: jquery selector match


    【解决方案1】:

    您可以使用以下方法判断对象是否为 div:

    $('selector').is('div');
    

    或者直接比较:

    $('selector1')[0].tagName == $('selector2')[0].tagName
    

    【讨论】:

    • 这仅比较每个集合的 first 元素(如果存在),.is() 将匹配集合中的任何元素匹配选择器(这也可能更复杂)。
    • 我只是通过使用选择器来简化代码。我假设只会选择一个元素。
    • @T.J. - 等等,什么? .get() 何时被弃用?
    • @Crowder 回答已修改
    • @Nick:我的错,它没有被弃用。我本可以发誓,但the docs 另有说法,事实上提到了get 的高级功能(比如,负索引),括号表示法不支持。
    【解决方案2】:

    有一个.is() 函数正是为此:

    var divObj = $(document.createElement('div')); 
    var result = divObj.is('div');
    

    You can test it out here。请注意,这是一个简单的情况,请注意在其他情况下 .is() 返回 true 如果您正在运行的 jQuery 对象中的 任何 元素与选择器匹配。

    【讨论】:

    • 如果你想确保只检查 first 一个(而不是查看 any 匹配的元素是否匹配),你可以随时做$(divObj[0]).is('div').
    • @TJC:在那种特殊情况下,宁愿不要麻烦 jQuery,而直接使用 divObj[0].tagName == "DIV" :-)
    猜你喜欢
    • 2011-03-19
    • 2018-03-15
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多