我决定编写一个插件,但有一段时间我不知道,我找不到有关它的文档,所以我决定在这里问一下。如何使用元素绑定插件
例如,当我们写
$("#some_element").nameOfPlugin();
在nameOfPlugin
有很多的功能,但如何some_element
与插件连接?
一个例子或者一些文档的链接将会非常有帮助。
谢谢。
我决定编写一个插件,但有一段时间我不知道,我找不到有关它的文档,所以我决定在这里问一下。如何使用元素绑定插件
例如,当我们写
$("#some_element").nameOfPlugin();
在nameOfPlugin
有很多的功能,但如何some_element
与插件连接?
一个例子或者一些文档的链接将会非常有帮助。
谢谢。
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。
在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)
});
}
实际上jQuery背后的想法是隐藏所有丑陋的原型部件。我同意理解基本的基本知识是个好主意,但我不确定这是否是一个好的答案。 – jAndy 2010-08-02 07:09:11
他在问一个原型方法如何与元素的选择相关联,这就是我所解释的。 – 2010-08-02 07:13:44
谢谢你。现在我知道我需要阅读更多信息。这就是为什么我在这里问问题。 – Simon 2010-08-02 07:17:32