我正在尝试将自定义函数添加到我的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");
}
});
但是,我对此有一些疑问;我不确定为什么会这样,有没有以这种方式做到这一点?有人可以解释一下吗?抽象的解释应该没问题。
答案 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.