'hasClass'和'is'之间的区别?另外,替代返回Jquery元素呢?

时间:2013-02-05 15:21:11

标签: javascript jquery html filter

  

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

HTML code:

<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();

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

3 个答案:

答案 0 :(得分:8)

当然,

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

element.hasClass('datepicker');

答案 1 :(得分:5)

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

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

答案 2 :(得分: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();