jquey可以幫我們幹這些事情:
1.消除瀏覽器的差異,不需要自己寫冗長的代碼來針對不同的瀏覽器綁定事件。
2.簡潔的dom操作. $("#test”)方法
3.輕鬆實現動畫,修改css等各種操作。
jquery的版本 2.x移除了對古老的IE6 7 8的支持。因此2.x更加的精簡。
按ID查找,按tag查找。按class查找.
// 查找<div id="abc">:
var div = $('#abc');
返回的對象都是jquery對象。
什麼是jquery的對象,jquery對象類似數組,他的每個元素都是一個引用了dom節點的對象。
如果id爲abc的div不存在,返回的對象如下[]
總之jquery的選擇器不會返回undefined或者null,不必進行判斷。
按tag進行查找.
var ps = $('p'); // 返回所有<p>節點
ps.length; // 數一數頁面有多少個<p>節點
按class查找。
var a = $('.red'); // 所有節點包含`class="red"`都將返回
// 例如:
// <div class="red">...</div>
// <p class="green red">...</p>
按屬性進行查找 比如找出name = 'email'的
var email = $('[name=email]'); // 找出<??? name="email">
jquery層級的選擇器 因爲DOM的結構是層級的結構,所以我們經常要根據層級關係來進行查找。可以進行過濾的相關查找。
var b = $("ul.lang li.lang-javascript");
console.log(b);
這種層級選擇器的好處便是縮小了選擇的範圍,首先定義父選擇器,再是子選擇器,避免頁面其他無關的元素。
子選擇器可以用箭頭的方式來表明,必須是父子的關係才能使用。
$('ul.lang>li.lang-javascript'); // 可以選出[<li class="lang-javascript">JavaScript</li>]
$('div.testing>li.lang-javascript'); // [], 無法選出,因爲<div>和<li>不構成父子關係
過濾器 可以用firstchild或者nth-child(even)來表示選擇出的是哪個節點。
$('ul.lang li'); // 選出JavaScript、Python和Lua 3個節點
$('ul.lang li:first-child'); // 僅選出JavaScript
$('ul.lang li:last-child'); // 僅選出Lua
$('ul.lang li:nth-child(2)'); // 選出第N個元素,N從1開始
$('ul.lang li:nth-child(even)'); // 選出序號爲偶數的元素
$('ul.lang li:nth-child(odd)'); // 選出序號爲奇數的元素
2操作DOM 修改text和html
獲取text和html等內容。
$('#test-ul li[name=book]').text(); // 'Java & JavaScript'
$('#test-ul li[name=book]').html(); // 'Java & JavaScript'
可以通過text進行修改 text('曹凱強')這種進行修改。
修改css的相關屬性。
$("#ckq").css('background-color','red');
div.css('color') 可以獲取對應的屬性值,('color':'red')這種操作可以修改對應的css屬性值。
顯示和隱藏DOM可以用提供的hide和show屬性使用。
$("#ckq").show();
增加DOM結可以利用append的方法。
var newP = '<p>陳盼盼</p>';
$("#ckq").append(newP);
刪除對應的節點,可以用remove的方法。
var li = $('#test-div>ul>li');
li.remove(); // 所有<li>全被刪除
jquery中的一些事件處理。
因爲js在瀏覽器中是以單線程模式運行的。頁面加載後,一旦頁面上所有的js代碼都被執行完畢,只能依靠觸發事件來執行js代碼。
如下所示 獲取超鏈接的jquery對象 隨後爲該對象添加click事件。
獲取對象後加上對應的click事件即可。
a.on('click',function(){
alert("hello");
})
鼠標事件
click: 鼠標單擊時觸發;
dblclick:鼠標雙擊時觸發;
mouseenter:鼠標進入時觸發;
mouseleave:鼠標移出時觸發;
mousemove:鼠標在DOM內部移動時觸發;
hover:鼠標進入和退出時觸發兩個函數,
相當於mouseenter加上mouseleave。
鍵盤事件
鍵盤事件僅作用在當前焦點的DOM上,通常是<input>
和<textarea>
。
keydown:鍵盤按下時觸發;
keyup:鍵盤松開時觸發;
keypress:按一次鍵後觸發。
其他事件
focus:當DOM獲得焦點時觸發;
blur:當DOM失去焦點時觸發;
change:當<input>
、<select>
或<textarea>
的內容改變時觸發;
submit:當<form>
提交時觸發;
ready:當頁面被載入並且DOM樹完成初始化後觸發
其中,需要記住的是,ready僅作用於document對象,由於ready事件在DOM完成初始化後觸發,且只觸發一次,所以非常適合來寫其他初始化的代碼。
$(document).on('ready', function () {
alert("ready");
})
ready函數還可以進行簡化。
$(function () {
}
$(document).ready(function () {
// on('submit', function)也可以簡化:
$('#testForm).submit(function () {
alert('submit!');
});
});
事件可以進行傳遞參數,比如獲取mousemove和keypress所需的參數。
$(function () {
$('#testMouseMoveDiv').mousemove(function (e) {
$('#testMouseMoveSpan').text('pageX = ' + e.pageX + ', pageY = ' + e.pageY);
});
});
取消綁定 注意這裏必須顯示定義的函數,按照匿名函數的話無法進行移除。
function hello(){
alert("hello");
}
a.on('click',hello);
var cpp = $("#cpp");
cpp.click(function(){
a.off('click',hello);
})