jquery的使用

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 &amp; 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);

  
})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章