使用jquery将函数添加到dom元素

时间:2012-02-06 22:00:18

标签: jquery dom prototype

我正在尝试将自定义函数添加到我的dom中共享相同类名的特定div元素。

像这样的东西

$(".custom-div").each(function(){
        $(this).newFtn = function() {
            $(this).addClass("makeover");
        }
});

所以这里我试图将newFtn添加到具有类名“.custom-div”的div元素。

经过反复试验并检查萤火虫中的元素。我按照以下方式工作

$(".custom-div").each(function(){
        $(this).init.prototype.newFtn = function() {
            $(this).addClass("makeover");
        }
});

但是,我对此有一些疑问;我不确定为什么会这样,有没有以这种方式做到这一点?有人可以解释一下吗?抽象的解释应该没问题。

2 个答案:

答案 0 :(得分:9)

我认为你想要做的是写一个jQuery插件。基本思路是:

(function($) {
    $.fn.newFtn = function() {
        this.each(function() {
            //Do stuff for each element in matched set
        });
    };
})(jQuery);

然后,您可以将此方法应用于任何jQuery对象:

$(".custom-div").newFtn();

请注意,这是大多数内置jQuery方法的工作方式(它们遍历匹配的元素集本身,因此通常不需要使用each)。

您可以从official tutorial开始了解有关jQuery插件开发的更多信息。

如果你真的想简单地为匹配集中的所有元素添加一个类,那么绝对不需要做任何这样的事情。只需在jQuery对象上调用addClass即可。它将适用于该对象中包含的所有元素。

答案 1 :(得分:1)

尝试类似:

function DisableCheckBox(o) {
    //No need for $('selector') here as 'o' is a jQuery object already.
    o.each(function () {
        o.addClass('makeover');
    //Other stuff...
    });
    //optionally return o on function exit if you want to do stuff to it outside this function
}

DisableCheckBox($(".custom-div"));
//or
var chk = DisableCheckBox($(".custom-div")); //if returning 'o' above.