使用 jquery 将函数添加到 dom 元素
我正在尝试向 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为你想做的是编写一个 jQuery 插件。基本思想是这样的:
然后您可以将此方法应用于任何 jQuery 对象:
请注意,这是大多数内置 jQuery 方法的工作方式(它们本身迭代匹配的元素集,因此通常不需要使用
每个
)。您可以从官方教程开始了解有关 jQuery 插件开发的更多信息。
如果您确实想简单地向匹配集中的所有元素添加一个类,则绝对不需要执行任何操作。只需在 jQuery 对象上调用
addClass
即可。它将应用于该对象中包含的所有元素。I think what you want to do is write a jQuery plugin. The basic idea is this:
You can then apply this method to any jQuery object:
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.尝试类似的方法:
Try something like: