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

发布于 2025-01-03 05:30:43 字数 543 浏览 1 评论 0原文

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

像这样的

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

所以我尝试将 newFtn 添加到类名“.custom-div”的 div 元素中。

经过反复试验并检查 firebug 中的元素。我按照以下方式让它工作

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

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

I am trying to add a custom function to a specific div elements in my dom that share the same class name.

Something like this

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

So here am trying to add the newFtn to the div elements with the class name ".custom-div".

After trial and error and inspecting of the element in firebug. I got this to work the following way

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

But, I have a few question on this; I am not sure of why this works and are there any draw backs of doing it in this manner? Can someone explain this please ? An abstract explanation should be fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离不开的别离 2025-01-10 05:30:43

我认为你想做的是编写一个 jQuery 插件。基本思想是这样的:

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

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

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

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

您可以从官方教程开始了解有关 jQuery 插件开发的更多信息。

如果您确实想简单地向匹配集中的所有元素添加一个类,则绝对不需要执行任何操作。只需在 jQuery 对象上调用 addClass 即可。它将应用于该对象中包含的所有元素。

I think what you want to do is write a jQuery plugin. The basic idea is this:

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

You can then apply this method to any jQuery object:

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

Note that this is the way most of the built-in jQuery methods work (they iterate over the matched set of elements themselves, so there's often no need to use each).

You can learn far more about jQuery plugin development by starting with the official tutorial.

If you really want to simply add a class to all of the elements in the matched set, there is absolutely no need to do any of this. Simply call addClass on the jQuery object. It will apply to all elements contained within that object.

天赋异禀 2025-01-10 05:30:43

尝试类似的方法:

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.

Try something like:

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.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文