我需要添加一些函数来返回一个dom元素的值。我试图使用jquery的bind方法,但似乎事件总是返回一个jquery集合。
我的目标是创建一个flashcard应用程序。所以我创建了包含方法和变量的flashcard对象,包括代表页面上flashcard的dom元素。只要我只处理dom元素(移动等),一切都很好,但在某些时候我需要获得对实际卡片对象的引用以访问其他功能。这是我想出的构造函数:
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;
}
后来我希望能够从外部调用some_function,也许是这样的:
card = dom_element.get_card();
card.some_function();
我尝试了以下三种在make_flashcard中定义get_card的方法,所有这些方法都失败了:
dom_element.get_card = function () {
return card;
};
dom_element.prototype.get_card = function () {
return card;
};
或
dom_element.bind("get_card", function () {
return card;
});
然后调用
card = dom_element.trigger("get_card");
如果你有任何提示让这个运行,我会非常高兴。或者你认为整个事情应该采用不同的方式吗?
提前致谢, 多米尼克
`
答案 0 :(得分:4)
如果你扩展了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();