我需要将插件功能附加到页面上的多个元素。

对于单个元素,该函数按以下方式附加(limiter是插件函数):

if (fullDescription.length) {
    fullDescription.limiter(1000, fullDescriptionCounter);
}


我需要将此插件附加到页面上的多个元素。为了实现它,我想到了以下代码:

if (categoryDescription.length) {
    $.each(categoryDescription, function(index, value) {
        value.limiter(180, categoryDescriptionCounter);
    });
}


不幸的是,limiter无法从作为$.each()迭代器回调的匿名函数中访问。

我有什么选择来完成工作?如何将limiter绑定到匿名函数?

最佳答案

使用this

$.each(categoryDescription, function(index, value) {
    $(this).limiter(180, categoryDescriptionCounter);
});


请注意,任何编写良好的插件都应已处理多个实例:

例如

 categoryDescription.limiter(180, categoryDescriptionCounter);


另请注意:对于任何自重插件,也不需要检查长度。 jQuery对象允许在零长度集合上运行方法。他们只是什么都不做:)

07-26 02:31