jquery 外掛程式學習(二)

來源:互聯網
上載者:User

建立全域函數只需通過為jquery對象添加屬性即可,而建立jquery對象的方法也可以通過為jquery.fn添加屬性來實現,實際上jquery.fn對象就是jquery.prototype原型對象的別名,使用別名更方便引用。

demo:
複製代碼 代碼如下:
jQuery.fn.test = function(){
alert('這是 jquery 對象方法 ');
}

然後,就可以在任何jquery對象中調用該方法了。
複製代碼 代碼如下:
$(function(){
$('h1').click(function(){
$(this).test();
});
});

由於這裡,並沒有任何地方匹配dom節點,所以編寫全域函數也是可以的(上一節有講過哦),但是,在使用jquery對象方法時,函數體內的this關鍵字總是引用當前的jquery對象,因此我們可以對上面的方法進行重寫,實現動態提示資訊,代碼如下:
複製代碼 代碼如下:
jQuery.fn.test = function(){
alert(this[0].nodeName); //提示當前jquery對象的dom節點名稱
}

重點來了,在上面的樣本中,可以看到由於jquery選取器返回的是一個數群組類型的dom節點集合,this指標就指向當前這個集合,故要顯示當前元素的節點名稱,就必須在this指標後面指定當前元素的序號。

思考: 如果jquery選取器匹配多個元素,我們該如何準確指定當前元素的對象呢?-----

要解決這個問題,我們不妨在當前jquery對象方法的環境中調用each()方法,通過隱式迭代的方式,讓this指標依次飲用每一個匹配的dom元素對象,例如,針對上一個樣本做進一步的修改
複製代碼 代碼如下:
jQuery.fn.test = function(){
this.each(function(){ //遍曆匹配的元素,此處的this表示對象集合
alert(this.nodeName); //提示當前jquery對象的dom節點名稱(注意這裡與上面的變化哦,下標消失了)
});
}

然後,在調用方法時,就不用擔心,jquery選取器所匹配的元素有多少了。例如在下面的例子中,當單擊不同的元素,會提示當前的節點名稱
複製代碼 代碼如下:
$(function(){
$('body *').click(function(){
$(this).test();
});
});

複製代碼 代碼如下:
<h1>ceshi</h1>
<a>dddddddddd</a>
<input type="button" value="test"/>
<div>div元素</div>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.