在javascript / jquery中为dom对象添加任意函数

时间:2010-10-03 01:21:11

标签: javascript jquery dom

我需要添加一些函数来返回一个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");

如果你有任何提示让这个运行,我会非常高兴。或者你认为整个事情应该采用不同的方式吗?

提前致谢, 多米尼克

`

1 个答案:

答案 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();