1

可能重复:
jQuery .hasClass() 与 .is()

HTML 代码:

<div class="results">
    <div class="table">
        <form class="tr" action="#" method="post">
            <div class="td">
                <input class="datepicker" type="text">
            </div>
            <div class="td">
                <input class="datepicker" type="text">
            </div>
            <div class="td">
                <input type="text">
            </div>
        </form>
    </div>
</div>

JS代码:

$('.results').find('input:text').each(function(){
    var element = $(this);
    var b = element.hasClass('.datepicker');
    var c = element.is('.datepicker');
}

我的问题:

'is' 和 'hasClass' 应该在找到包含类“datepicker”的元素时都返回 true,对吗?

不知何故,它不是。'hasClass' 返回 false,而 'is' 返回 true。

此外,我一直在寻找一种解决方案来进行一些链接 jquery 调用。但是 'hasClass' 和 'is' 都只返回一个布尔值。是否有一个返回 $(Jquery) 元素的 JQuery 函数,所以我可以做这样的事情?我已经尝试过“过滤”功能,但似乎不起作用。

element.SomeFunctionToDigUpAnElementWithClass('datepicker').DoSomeCoolStuff();

==================================================== ===============

4

3 回答 3

8

hasClass当然,没有点,因为它是一个类名。is另一方面,任何选择器。

element.hasClass('datepicker');
于 2013-02-05T15:23:06.367 回答
5

hasClass()更具体和更快的操作。is() 允许您选择更广泛的范围,例如您可以is(':checked')

http://jsperf.com/hasclass-vs-is-so

于 2013-02-05T15:23:48.893 回答
1

要保持链接,您需要修改选择器:

$('.results').find('input:text.datepicker').doSomething();

或者each如果您需要将特定参数传递给每个输入元素的下一个函数:

$('.results').find('input:text.datepicker').each(function(){
    doSomething();
});

如果您需要为没有 datepicker 类集的输入做一些事情,请使用:not选择器:

$('.results').find('input:text:not(.datepicker)').doSomething();

甚至没有find

$('.results input:text.datepicker').doSomething();
于 2013-02-05T15:30:05.713 回答