進(jìn)階15 jquery

jQuery里面用this和用$(this)有什么區(qū)別

表示對(duì)象不同:this表示的是javascript提供的當(dāng)前對(duì)象汞贸,$(this)表示的是用jquery封裝候的當(dāng)前對(duì)象博敬。

$('img').each(function(){
        if( checkWindow($(this)) && !isLoad($(this))){
            loadImg($(this))
        }
    })
function checkWindow( $img ) //$img等于each遍歷里的$(this)

jQuery 中, $(document).ready()是什么意思县耽?

當(dāng)DOM準(zhǔn)備就緒時(shí),指定一個(gè)函數(shù)來(lái)執(zhí)行。與JavaScript提供了window.onload事件的區(qū)別:

The ready event occurs after the HTML document has been loaded, while the onload event occurs later, when all content (e.g. images) also has been loaded.

The onload event is a standard event in the DOM, while the ready event is specific to jQuery. The purpose of the ready event is that it should occur as early as possible after the document has loaded, so that code that adds functionality to the elements in the page doesn't have to wait for all content to load.
簡(jiǎn)單來(lái)說(shuō) window.onload是當(dāng)頁(yè)面呈現(xiàn)時(shí)用來(lái)執(zhí)行這個(gè)事件佩迟,直到所有的東西,如圖像已被完全接收前竿屹,此事件不會(huì)被觸發(fā)
$(document).ready()只要DOM結(jié)構(gòu)已完全加載時(shí)报强,腳本就可以運(yùn)行。傳遞處理函數(shù)給.ready()方法拱燃,能保證DOM準(zhǔn)備好后就執(zhí)行這個(gè)函數(shù)

node.html()和node.text()的區(qū)別?

node.html()秉溉,返回所選擇元素內(nèi)的html內(nèi)容,包含html標(biāo)簽和文本內(nèi)容node.text(),返回所選擇元素內(nèi)的文本內(nèi)容召嘶,不包含html標(biāo)簽父晶,只包含文本內(nèi)容

$.extend 的作用和用法?

語(yǔ)法:jQuery.extend([deep,] target [, object1 ] [, objectN ] )
1. 當(dāng)我們提供兩個(gè)或多個(gè)對(duì)象給.extend(),對(duì)象的所有屬性都添加到目標(biāo)對(duì)象(target參數(shù))弄跌。 2\. 如果只有一個(gè)參數(shù)提供給.extend()甲喝,這意味著目標(biāo)參數(shù)被省略。在這種情況下铛只,jQuery對(duì)象本身被默認(rèn)為目標(biāo)對(duì)象埠胖。這樣,我們可以在jQuery的命名空間下添加新的功能淳玩。這對(duì)于插件開(kāi)發(fā)者希望向 jQuery 中添加新函數(shù)時(shí)是很有用的

目標(biāo)對(duì)象(第一個(gè)參數(shù))將被修改直撤,并且將通過(guò)$.extend()返回。然而蜕着,如果我們想保留原對(duì)象谋竖,我們可以通過(guò)傳遞一個(gè)空對(duì)象作為目標(biāo)對(duì)象:

var object = $.extend({}, object1, object2);

在默認(rèn)情況下,通過(guò)$.extend()合并操作不是遞歸的;

如果第一個(gè)對(duì)象的屬性本身是一個(gè)對(duì)象或數(shù)組承匣,那么它將完全用第二個(gè)對(duì)象相同的key重寫(xiě)一個(gè)屬性蓖乘。這些值不會(huì)被合并。如果將 true作為該函數(shù)的第一個(gè)參數(shù)韧骗,那么會(huì)在對(duì)象上進(jìn)行遞歸的合并嘉抒。

var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};

// Merge object2 into object1
$.extend( object1, object2 );

JQuery 的鏈?zhǔn)秸{(diào)用是什么?

鏈?zhǔn)秸{(diào)用:使用jQuery方法時(shí)宽闲,對(duì)象方法返回的是對(duì)象本身众眨,可以調(diào)用對(duì)此對(duì)象的其他jQuery方法,實(shí)現(xiàn)連續(xù)調(diào)用多個(gè)方法

例:$(this).siblings().removeClass('active');

原理(偽代碼):

    window.onload = function(){
        // jQuery構(gòu)造器
        var jQuery = function(selector, context) {
            return new jQuery.fn.init(selector, context);
        }
        jQuery.fn = jQuery.prototype = {
            constructor: jQuery,
            //給所有元素設(shè)置顏色
            setColor: function(color) {
                for (var i = 0; i < this.length; i++) {
                    this[i].style.color = color
                }
                return this;
            },
            //返回第一個(gè)元素
            first: function() {
                return this[0]
            }
        }
        var init = jQuery.fn.init = function(selector, context) {
            var elem = document.querySelectorAll(selector)
            for (var i = 0; i < elem.length; i++) {
                this[i] = elem[i]
            }
            this.length   = elem.length;
            this.context  = document;
            this.selector = selector;
            return this;
        }
        init.prototype = jQuery.fn;
        var $div = jQuery('div')
        $div.setColor('red').first()
    }

jQuery 中 data 函數(shù)的作用

用法:jQuery.data( element, key, value )
jQuery.data() 方法允許我們?cè)贒OM元素上附加任意類型的數(shù)據(jù),避免了循環(huán)引用的內(nèi)存泄漏風(fēng)險(xiǎn)容诬。如果 DOM 元素是通過(guò) jQuery 方法刪除的或者當(dāng)用戶離開(kāi)頁(yè)面時(shí)娩梨,jQuery 同時(shí)也會(huì)移除添加在上面的數(shù)據(jù)。
例:

[
image

image.jpg1992x752 62.3 KB](https://jscode.me/uploads/default/original/2X/1/13c80f027c70d1f222e36279dd690669f5141681.jpg "image.jpg")

寫(xiě)出以下功能對(duì)應(yīng)的 jQuery 方法

$(ele).addClass('.active')
$(ele).removeClass('.active')

展示元素node, 隱藏元素node

$(ele).show()
$(ele).hide()

獲取元素$node 的 屬性: id览徒、src狈定、title, 修改以上屬性

$node.attr('id');//獲取
$node.attr('id’,'值'); //修改
$node.attr('src');//獲取
$node.attr('src’,'值');//修改
$node.attr('title');//獲取
$node.attr('title’,'值');//修改

給$node 添加自定義屬性data-src

$node.data("src",str)

ct 內(nèi)部最開(kāi)頭添加元素node

$(".ct").prepend(node);

ct 內(nèi)部最末尾添加元素node

$(".ct").append(node);

刪除$node

$node.remove()

把$ct里內(nèi)容清空

$ct.empty()

在$ct 里設(shè)置 html <div class="btn"></div>

$ct.html('<div class="btn"></div>')

獲取习蓬、設(shè)置$node 的寬度纽什、高度(分別不包括內(nèi)邊距、包括內(nèi)邊距躲叼、包括邊框芦缰、包括外邊距)

$node.width();//不包括內(nèi)邊距寬度,僅包括內(nèi)容
$node.height();//不包括內(nèi)邊距高度,僅包括內(nèi)容
$node.innerWidth();//包括內(nèi)容和內(nèi)邊距寬度
$node.innerHeight();//包括內(nèi)容和內(nèi)邊距高度
$node.outerWidth();//包括內(nèi)容,內(nèi)邊距,邊框?qū)挾?$node.outerHeight();//包括內(nèi)容,內(nèi)邊距,邊框高度
$node.outerHeight(true);//包括內(nèi)容,內(nèi)邊距,邊框,外邊距高度
$node.outerWidth(true);//包括內(nèi)容,內(nèi)邊距,邊框,外邊距寬度

獲取窗口滾動(dòng)條垂直滾動(dòng)距離

$(window).scrollTop()

獲取$node 到根節(jié)點(diǎn)水平、垂直偏移距離

$node.offset().left
$node.offset().top

修改$node 的樣式枫慷,字體顏色設(shè)置紅色让蕾,字體大小設(shè)置14px

$node.css({"color":"red","font-size":"14px"})

遍歷節(jié)點(diǎn)浪规,把每個(gè)節(jié)點(diǎn)里面的文本內(nèi)容重復(fù)一遍

$node.each(function(){
console.log($(this).text())
})

從$ct 里查找 class 為 .item的子元素

$ct.find('.item')

獲取$ct 里面的所有孩子

$ct.children()

對(duì)于$node,向上找到 class 為'.ct'的父親探孝,在從該父親找到'.panel'的孩子

$node.parents('.ct').children('.panel')

獲取選擇元素的數(shù)量

$(ele).length
$(ele).size()

獲取當(dāng)前元素在兄弟中的排行

$(ele).index();

7. 用jQuery實(shí)現(xiàn)以下操作

  • 當(dāng)點(diǎn)擊btn 時(shí)笋婿,讓btn 的背景色變?yōu)榧t色再變?yōu)樗{(lán)色
    btn.on("click",function(e){btn.css("background","red")
    setTimeout(function(){
    $btn.css("background","blue")
    },2000)
    })

  • 當(dāng)窗口滾動(dòng)時(shí),獲取垂直滾動(dòng)距離
    (window).scroll(function () { console.log((window).scrollTop())
    });

  • 當(dāng)鼠標(biāo)放置到div 上顿颅,把div 背景色改為紅色缸濒,移出鼠標(biāo)背景色變?yōu)榘咨?br> div.on("mouseenter",function(){div.css("background","red")
    })

     $dic.on("mouseleave",function(){
     $dic.css("background","white")
     })
    
  • 當(dāng)鼠標(biāo)激活 input 輸入框時(shí)讓輸入框邊框變?yōu)樗{(lán)色,當(dāng)輸入框內(nèi)容改變時(shí)- 把輸入框里的文字小寫(xiě)變?yōu)榇髮?xiě)粱腻,當(dāng)輸入框失去焦點(diǎn)時(shí)去掉邊框藍(lán)色庇配,控制臺(tái)展示輸入框里的文字

      $("input").on("focusin",function(){
          $("input").css("border-color","blue")
    
          $("input").on("keyup",function(){
          $("input").val($("input").val().toLowerCase())
          })
    })
    
    $("input").on("blur",function(){
          $("input").css("border-color","white")
              console.log($(this).val())
        })
    
  • 當(dāng)選擇 select 后,獲取用戶選擇的內(nèi)容
    ("select").on("change",function(){("p").text($(this).val())
    })

8.用 jQuery ajax 實(shí)現(xiàn)如下效果栖疑。`當(dāng)點(diǎn)擊加載更多會(huì)加載數(shù)據(jù)展示到頁(yè)面 效果預(yù)覽

代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讨永,一起剝皮案震驚了整個(gè)濱河市滔驶,隨后出現(xiàn)的幾起案子遇革,更是在濱河造成了極大的恐慌,老刑警劉巖揭糕,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萝快,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡著角,警方通過(guò)查閱死者的電腦和手機(jī)揪漩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吏口,“玉大人奄容,你說(shuō)我怎么就攤上這事〔玻” “怎么了昂勒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)舟铜。 經(jīng)常有香客問(wèn)我戈盈,道長(zhǎng),這世上最難降的妖魔是什么谆刨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任塘娶,我火速辦了婚禮,結(jié)果婚禮上痊夭,老公的妹妹穿的比我還像新娘刁岸。我一直安慰自己,他們只是感情好她我,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布虹曙。 她就那樣靜靜地躺著膝宁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪根吁。 梳的紋絲不亂的頭發(fā)上员淫,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音击敌,去河邊找鬼介返。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沃斤,可吹牛的內(nèi)容都是我干的圣蝎。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼衡瓶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼徘公!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起哮针,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤关面,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后十厢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體等太,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蛮放,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缩抡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡包颁,死狀恐怖瞻想,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情娩嚼,我是刑警寧澤蘑险,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站待锈,受9級(jí)特大地震影響漠其,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竿音,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一和屎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧春瞬,春花似錦柴信、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)潜沦。三九已至,卻和暖如春绪氛,著一層夾襖步出監(jiān)牢的瞬間唆鸡,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工枣察, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留争占,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓序目,卻偏偏與公主長(zhǎng)得像臂痕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子猿涨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容