jquery和原生dom對象的轉換&常用函數方法

一、jquery和原生dom對象的轉換

1、新建jquery對象和長度

var $p= $('p')新建一個jquery對象,一般在新建jquery對象的時候,加上一個$,以便好認。

返回的是一個類似數組對象,jquery可以通過$p[0]下標來獲取對應的對象,也可以獲取$p
的長度
clipboard.png

頁面上沒有id=abc的元素,選中原生js對象時,返回的是null,我們可以知道選中這個元素不存在。但選中這個jquery對象,返回的還是類數組,我們分辨不了,我們只能通過length來分辨jquery對象是否不存在
clipboard.png

2、jquery轉換爲dom對象

jquery可以通過$p[0]下標來轉換爲對應的dom對象

clipboard.png
如果我們只是想要獲取對應的子jquery對象,不想轉換成dom對象,就直接用$('#p1').eq(2)
得到的還是jquery對象
clipboard.png

get方法獲取指定index的DOM對象,也就是我們說的jQuery對象轉DOM對象。get()不寫參數把所有對象轉爲DOM對象返回

3、dom對象轉換成jquery對象

dom對象轉換成jquery對象,只需要加上一個#號

clipboard.png

二、jquery對象的方法

1、.each( function(index, Element) )

//each的參數順序和js的參數順序相反
遍歷一個jQuery對象,爲每個匹配元素執行一個函數

$('li').each(function(ind,e){
console.log(('ind+':'+$(e).text()') } //text方法是取出jquery對象的值,

jQuery對象裏面回調函數,一般來說對應的元素都是原生dom,要執行jQuery的text方法需要加$轉換成jquery對象

2、jQuery.each( collection, callback(indexInArray, valueOfElement) )

在jquery中有一種用法\$.each(),其中$==jQuery對象
clipboard.png
each通用的迭代函數,它可以用來無縫迭代對象和數組。數組和類似數組的對象通過一個長度屬性(如一個函數的參數對象)來迭代數字索引,從0到length - 1。其他對象通過其屬性名進行迭代
注意,函數對應的是element的值,而不是element本身

var obj = {
  "flammable": "inflammable",
  "duh": "no duh"
};
$.each( obj, function( key, value ) {
  alert( key + ": " + value );
});

3、.map( callback(index, domElement) )

通過一個函數匹配當前集合中的每個元素,產生一個包含新的jQuery對象


$('div').map(function(i, ele){
    return this.id;
});
$('.child').map(function(index,e){
return  $(e).text()})

clipboard.png

4、jQuery.extend([deep,] target [, object1 ] [, objectN ] )

1)將兩個或更多對象的內容合併到第一個對象目標對象(第一個參數)將被修改,並且將通過$.extend()返回。然而,如果我們想保留原對象,我們可以通過傳遞一個空對象作爲目標對象:

var object = $.extend({}, object1, object2);
在默認情況下,通過$.extend()合併操作不是遞歸的;

2)deep類型: Boolean
如果是 true,合併成爲遞歸(又叫做深拷貝)。不支持給這個參數傳遞 false,如果第一個對象的屬性不寫,就不會實現深拷貝

3)不深拷貝的例子

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

結果:{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}

4)深拷貝的例子

var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};
 
$.extend( true, object1, object2 );
 

結果:{"apple":0,"banana"{"weight":52,"price":200},"cherry":97,"durian":100}

5、.clone( [withDataAndEvents ] )

.clone()方法深度複製所有匹配的元素集合,包括所有匹配元素、匹配元素的下級元素、文字節點

通常我們將頁面上一個元素插入到DOM裏另一個地方,它會被從老地方移走,類似剪切的效果

$('.hello').appendTo('.goodbye');

<div class="container">
<div class="goodbye">

Goodbye
<div class="hello">Hello</div>

</div>
</div>
但是我們如果需要的是複製而不是剪切,我們可以像下面這樣寫代碼:

$('.hello').clone().appendTo('.goodbye');

6、.index() / .index(selector)/ .index(element)

.get() 接受一個索引值參數並返回對應的DOM節點, .index() 與其正好相反,接受一個DOM節點然後返回其索引值
clipboard.png
建議直接看jquery文檔

7、.ready( handler )

當DOM準備就緒時,指定一個函數來執行

雖然JavaScript提供了load事件,當頁面呈現時用來執行這個事件,直到所有的東西,如圖像已被完全接收前,此事件不會被觸發。

在大多數情況下,只要DOM結構已完全加載時,腳本就可以運行。傳遞處理函數給.ready()方法,能保證DOM準備好後就執行這個函數,因此,這裏是進行所有其它事件綁定及運行其它 jQuery 代碼的最佳地方。

如果執行的代碼需要在元素被加載之後才能使用時,(例如,取得圖片的大小需要在圖片被加載完後才能知道),就需要將這樣的代碼放到 load 事件中。

下面兩種語法全部是等價的:

$(document).ready(handler)
$(handler)
我們經常這麼使用

$(function(){

console.log('ready');

});
這三種寫法都表示一個意思
clipboard.png

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