jQuery常用函式

weixin_34236869發表於2017-07-02

常用方法

.each(function(index.Element))

遍歷一個jQuery物件,為每個匹配元素執行一個函式

$( "li" ).each(function( index ) {
  console.log( index + ": "" + $(this).text() );
});

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

一個通用的迭代函式,它可以用來無縫迭代物件和陣列。陣列和類似陣列的物件通過一個長度屬性(如一個函式的引數物件)來迭代數字索引,從0到length - 1。其他物件通過其屬性名進行迭代。

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

.map( callback(index, domElement) )

通過一個函式匹配當前集合中的每個元素,產生一個包含新的jQuery物件

$('div').map(function(i, ele){
    return this.id;
});
jQuery.extend([deep,] target [, object1 ] [, objectN ] )

1,當我們提供兩個或多個物件給$.extend(),物件的所有屬性都新增到目標物件(target引數)。

2,如果只有一個引數提供給$.extend(),這意味著目標引數被省略。在這種情況下,jQuery物件本身被預設為目標物件。這樣,我們可以在jQuery的名稱空間下新增新的功能。這對於外掛開發者希望向 jQuery 中新增新函式時是很有用的

目標物件(第一個引數)將被修改,並且將通過$.extend()返回。然而,如果我們想保留原物件,我們可以通過傳遞一個空物件作為目標物件:

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

在預設情況下,通過$.extend()合併操作不是遞迴的;

如果第一個物件的屬性本身是一個物件或陣列,那麼它將完全用第二個物件相同的key重寫一個屬性。這些值不會被合併。如果將 true作為該函式的第一個引數,那麼會在物件上進行遞迴的合併。

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

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

.index() / .index(selector)/ .index(element)

從給定集合中查詢特定元素index

Search for a given element from among the matched elements.

1,沒引數返回第一個元素index

2,如果引數是DOM物件或者jQuery物件,則返回引數在集合中的index

3,如果引數是選擇器,返回第一個匹配元素index,沒有找到返回-1

看個例子

var listItem = $( "#bar" );
alert( "Index: " + $( "li" ).index( listItem ) );

.ready( handler )

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

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

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

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

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

  • $(document).ready(handler)

  • $(handler)
    我們經常這麼使用

    $(function(){
      console.log('ready');
    });

相關文章