jQuery 很牛javascript
jQuery 牛在不會JS的小白都能看懂使用css
// 之前若是不用 jQuery,監聽事件(兼容 IE 6)你得這麼寫
if (button.addEventListener)
button.addEventListener('click',fn);
else if (button.attachEvent) {
button.attachEvent('onclick', fn);
}else {
button.onclick = fn;
}
// 可是若是你用 jQuery,你只須要這麼寫
$(button).on('click', fn)
複製代碼
// 若是你想獲取 .nav > .navItem 對應的全部元素,用 jQuery 是這樣寫的`
$('.nav > .navItem')
// 在 IE 6 上,你得這麼寫
var navItems = document.getElementsByClassName('navItem')
var result = []
for(var i = 0; i < navItems.length; i++){
if(navItems[i].parentNode.className.match(/\bnav\b/){
result.push(navItems[i])
}
}
複製代碼
能夠看到 jQuery 代碼可讀性很是強,這都源自於其經典的設計思路和編程套路,下面一塊兒來看看jQuery用到的那些編程套路html
好比建立新元素,只要把新元素直接傳入jQuery的構造函數就好了前端
$('<p>Hello</p>')
複製代碼
$('div').find('h3').eq(2).html('Hello')
複製代碼
$ 這個函數的參數能夠是函數、字符串、元素和 jQuery 對象,甚至還能接受多個參數java
$(fn)
$('div')
$(div)
$($(div))
$('span', '#scope1')
複製代碼
$('div').on('click', 'span', function(){...})
複製代碼
$('h1').html(); //html()沒有參數,表示取出h1的值
$('h1').html('Hello'); //html()有參數Hello,表示對h1進行賦值
複製代碼
// 你的插件在一個 button 上綁定了不少事件
$button.on('click.plugin', function(){...})
$button.on('mouseenter.plugin', function(){...})
// 而後你想在某個時刻移除以上全部事件
$button.off('.plugin')
複製代碼
$.fn
是 $.prototype
的別名一句話講清jQuery的基本設計思想和主要用法,就是 "選擇元素,對其操做" 。 這是它區別於其餘Javascript庫的根本特色。jquery
另外jQuery最使人稱道、最方便的特色,在於每一步的jQuery操做,返回的都是一個Api對象(或者說Api對象),於是能夠用 jQuery 玩出不少騷操做,一塊兒來看看:編程
jQuery獲取元素很是簡單,將一個選擇表達式,放進構造函數jQuery()
(簡寫爲$
),便可獲得被選中的「元素」。設計模式
注意:這裏獲得的並不是是真正的網頁元素,而是一個Api對象,這個對象包含不少操做元素的屬性api
表達式能夠是css選擇器瀏覽器
$(document) //選擇整個文檔對象
$('#myId') //選擇ID爲myId的網頁元素
$('div.myClass') // 選擇class爲myClass的div元素
$('input[name=first]') // 選擇name屬性等於first的input元素
複製代碼
也能夠是jQuery特有的表達式
$('a:first') //選擇網頁中第一個a元素
$('tr:odd') //選擇表格的奇數行
$('#myForm :input') // 選擇表單中的input元素
$('div:visible') //選擇可見的div元素
$('div:gt(2)') // 選擇全部的div元素,除了前三個
$('div:animated') // 選擇當前處於動畫狀態的div元素
複製代碼
這是jQuery返回一個Api對象這一特性最經典的用法,在選中網頁元素後,能夠對它進行一系列操做,而且全部操做能夠鏈接在一塊兒,以鏈條的形式寫出來
$('div').find('h3').eq(2).html('Hello')
複製代碼
拆解後是這樣:
$('div') //找到div元素
.find('h3') //選擇其中的h3元素
.eq(2) //選擇第3個h3元素
.html('Hello'); //將它的內容改成Hello
複製代碼
jQuery還提供了.end()方法,使得結果集能夠後退一步
$('div')
.find('h3')
.eq(2)
.html('Hello')
**.end() //退回到選中全部的h3元素的那一步**
.eq(0) //選中第一個h3元素
.html('World'); //將它的內容改成World
複製代碼
直接將新元素直接傳入jQuery的構造函數,便可建立新元素
$('<p>Hello</p>')
$('<li class="new">new list item</li>')
$('ul').append('<li>list item</li>')
複製代碼
兩種方式
// 移動元素自身
$('div').insertAfter($('p')); // 把div元素移動p元素後面
// 移動其餘元素
$('p').after($('div')); // 把p元素加到div元素前面
複製代碼
$("img").attr("src","img/a.jpg");
$("img").attr("width","100px");
// 詳細用法
$(selector).attr(attribute) //返回被選元素的屬性值。
$(selector).attr(attribute,value) //設置被選元素的屬性和值。
$(selector).attr(attribute,function(index,oldvalue)) //用函數返回值設置被選元素的屬性和值。 $(selector).attr({attribute:value, attribute:value ...}) //爲被選一個以上的元素設置屬性和值。 複製代碼