在javascript/jquery中向dom对象添加任意函数
我需要添加一些向dom元素返回值的函数。我尝试使用jquery的bind方法,但似乎事件总是返回jquery集合 我的目标是创建一个flashcard应用程序。因此,我创建了包含方法和变量的flashcard对象,包括在页面上表示flashcard的dom元素。只要我只处理dom元素(四处移动等),一切都很好,但在某些情况下,我需要获得对实际卡对象的引用才能访问附加功能。这是我想出的构造器:在javascript/jquery中向dom对象添加任意函数,javascript,jquery,dom,Javascript,Jquery,Dom,我需要添加一些向dom元素返回值的函数。我尝试使用jquery的bind方法,但似乎事件总是返回jquery集合 我的目标是创建一个flashcard应用程序。因此,我创建了包含方法和变量的flashcard对象,包括在页面上表示flashcard的dom元素。只要我只处理dom元素(四处移动等),一切都很好,但在某些情况下,我需要获得对实际卡对象的引用才能访问附加功能。这是我想出的构造器: function make_flashcard { var dom_elem
function make_flashcard {
var dom_element;
function some_function() {}
/*...other variables and functions */
var card = {
dom_element: dom_element,
some_function: some_function,
/*...other variables and functions */
};
return card;
}
稍后,我希望能够从外部调用一些函数,可能如下所示:
card = dom_element.get_card();
card.some_function();
我尝试了以下三种在make_flashcard中定义get_卡的方法,但都失败了:
dom_element.get_card = function () {
return card;
};
dom_element.prototype.get_card = function () {
return card;
};
或
然后打电话
card = dom_element.trigger("get_card");
如果你有什么建议可以让这一切顺利进行,我会很高兴的。或者你认为整个事情应该以不同的方式来处理
提前感谢,,
多米尼克
`如果改为扩展jQuery集合原型会怎么样
$.fn.flashcard = function () {
var self = this;
if (!this.data("flashcard")) {
this.data("flashcard", {
element: self,
some_function: some_function,
/*...other variables and functions */
});
}
return this.data("flashcard");
};
然后你可以像这样使用它:
var card = $("div.myClass").flashcard();
card.some_function();
谢谢!!这很有帮助。数据方法正是我所寻找的,使用插件它看起来也很不错:-)。我花了一些时间才弄明白,但现在它起作用了。
var card = $("div.myClass").flashcard();
card.some_function();