Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript/jquery中向dom对象添加任意函数_Javascript_Jquery_Dom - Fatal编程技术网

在javascript/jquery中向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

我需要添加一些向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;
    }
稍后,我希望能够从外部调用一些函数,可能如下所示:

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