鍍金池/ 問答/HTML/ jquery獲取某一class的元素,打印出的是jQuery.fn.init(0

jquery獲取某一class的元素,打印出的是jQuery.fn.init(0),不是HTMLCollection()集合。

使用jquery獲取某一class的元素,控制臺(tái)打印出的是jQuery.fn.init(0),并沒有獲取到這一類選擇器的元素,我該怎么獲?。坑胘query獲取HTMLCollection()集合?

原生JavaScript打印出來的是HTMLCollection()。

jquery打印出來的是jQuery.fn.init(0)。

附上我的代碼

var e = document.getElementsByClassName('star');
console.log(e);


$(document).ready(function(){
    console.log($('.star'));
    $('.star').click(function () {
        $(this).css = ('color', '#00F7DE');
        console.log($(this).tagName);
    });
});
回答
編輯回答
孤巷
  1. 需要去了解 JQuery 源碼;

    jQuery = function( selector, context ) {
        return new jQuery.fn.init( selector, context, rootjQuery );
    }
  2. int 里會(huì)調(diào)用 find 函數(shù);在 find 函數(shù)里面會(huì)發(fā)現(xiàn)調(diào)用了 contains 函數(shù);
  3. 最終是 JQuery 使用 Sizzle 選擇器引擎; sizzle 里部分代碼如下:

    // Speed-up: Sizzle(.CLASS)
    /*
     * 處理class類型選擇器,如:.class
     * 下面條件判斷分別是:
     * m = match[3]:有效的class類型選擇器
     * support.getElementsByClassName 該選擇器的p支持getElementsByClassName
     * context.getElementsByClassName 當(dāng)前上下文節(jié)點(diǎn)有g(shù)etElementsByClassName方法
     * */            
        else if ((m = match[3]) && support.getElementsByClassName
                && context.getElementsByClassName) {
            push.apply(results, context.getElementsByClassName(m));
            return results;
2018年3月29日 14:05
編輯回答
孤客

jquery 對(duì)取得的元素進(jìn)行了包裝,變成了 jquery 對(duì)象,所以才具備了相應(yīng)的 jquery 對(duì)象方法,如果要對(duì)jquery 使用原生的 js 方法,需要轉(zhuǎn)成原生的 HTMLelement 對(duì)象,方法有:

$('body')//jq 對(duì)象
$('body').toArray()
$('body')[0]
Array.from($('body'))
2018年9月3日 09:00