2010-08-02 93 views
-1

我决定编写一个插件,但有一段时间我不知道,我找不到有关它的文档,所以我决定在这里问一下。如何使用元素绑定插件

例如,当我们写

$("#some_element").nameOfPlugin(); 

nameOfPlugin有很多的功能,但如何some_element与插件连接?

一个例子或者一些文档的链接将会非常有帮助。

谢谢。

回答

2

nameOfPlugin是当用脚本元素插入时扩展jQuery以便任何jQuery对象可以包含该方法的原型方法。

nameOfPlugin的所有内部代码发生在该原型方法和定义的范围内。

简单的例子,你如何扩展jQuery,使用人类而不是jQuery。

function Human(){}; 
Human.prototype.attack = function() { alert('attack') }; 
var john = new Human; 
john.attack(); 

至于$()连接到它,$()返回DOM元素(一个或多个)的阵列。插件在每个这样的上下文中被调用,因为对象拥有该方法,因为它是拥有您添加的插件方法的jQuery构造函数的实例。

$('body').hide()翻译为使用document.body作为上下文调用jQuery.prototype.hide方法。

我建议阅读原型继承来理解这一点。一个好的资源将是Eloquent JS,特别是chapter 8

+0

实际上jQuery背后的想法是隐藏所有丑陋的原型部件。我同意理解基本的基本知识是个好主意,但我不确定这是否是一个好的答案。 – jAndy 2010-08-02 07:09:11

+1

他在问一个原型方法如何与元素的选择相关联,这就是我所解释的。 – 2010-08-02 07:13:44

+1

谢谢你。现在我知道我需要阅读更多信息。这就是为什么我在这里问问题。 – Simon 2010-08-02 07:17:32

2

在jQuery原型中,this关键字代表选中的元素。

F.ex:

$('#some_element').myPlugin(); 

$.fn.myPlugin = function() { 
    console.log(this); // this = #some_element (jQuery instance) 

    // looping through elements and returning the instance 
    // to allow further chaining: 
    return this.each(function() { 
    console.log(this) // this = #some_element (HTML element) 
    }); 
}