我需要将插件函数附加到页面上的多个元素。
对于单个元素,函数附加如下(limiter
是插件函数):
if (fullDescription.length) {
fullDescription.limiter(1000, fullDescriptionCounter);
}
我需要将此插件附加到页面上的多个元素。为实现这一目标,我提出了这个代码:
if (categoryDescription.length) {
$.each(categoryDescription, function(index, value) {
value.limiter(180, categoryDescriptionCounter);
});
}
不幸的是,limiter
无法从作为$.each()
迭代器回调的匿名函数中访问。
我有什么选择来完成这项工作?如何将limiter
绑定到匿名函数?
答案 0 :(得分:2)
使用this
:
$.each(categoryDescription, function(index, value) {
$(this).limiter(180, categoryDescriptionCounter);
});
请注意,任何编写良好的插件都应该已经处理了多个实例:
e.g。
categoryDescription.limiter(180, categoryDescriptionCounter);
另请注意:任何自尊插件也不需要检查长度。 jQuery对象允许在零长度集合上运行方法。他们什么都不做:)
答案 1 :(得分:1)
因为value是dom元素引用而不是jQuery包装器对象所以它不能访问jQuery插件方法。
您可以在整个对象集中调用插件,如下所示
if (categoryDescription.length) {
categoryDescription.limiter(180, categoryDescriptionCounter);
}
如果插件不支持在一组元素上调用,则循环遍历像
这样的元素集if (categoryDescription.length) {
categoryDescription.each(function (index, value) {
$(value).limiter(180, categoryDescriptionCounter);
});
}