Я не знаю, как выглядит сам HTML, но попробуйте что-то вроде этого:
// snip...
var $container = $('#containerDiv');
for (var i = 0; i < data.length; i++)
{
$container.append(data[i]);
}
$container.children('div').textfill({ maxFontPixels: 36 });
Похоже, что плагин опирается на элемент, содержащий один <span>
элемент, поэтому ваш HTML, вероятно, придется структурировать соответствующим образом. Также основанный на крошечном тесте , похоже, что плагин не работает правильно при вызове коллекции jQuery, которая содержит более одного элемента. Простое исправление:
$container.children('div').each(function ()
{
$(this).textfill({ maxFontPixels: 36 });
});
«Правильный путь» заключается в том, чтобы фактически изменить плагин, хотя:
;(function($) {
$.fn.textfill = function(options) {
var fontSize = options.maxFontPixels;
this.each(function () {
var $this = $(this),
ourText = $this.find('span:visible:first'),
maxHeight = $this.height(),
maxWidth = $this.width(),
textHeight,
textWidth;
do {
ourText.css('font-size', fontSize);
textHeight = ourText.height();
textWidth = ourText.width();
fontSize = fontSize - 1;
} while ((textHeight > maxHeight || textWidth > maxWidth) && fontSize > 3);
});
return this;
}
})(jQuery);
Итак, ваш измененный плагин будет вызывать его на каждом промежутке, найденном в контейнере div?
Не совсем. Мои изменения означают, что вы сможете заменить
$container.children('div').each(function ()
{
$(this).textfill({ maxFontPixels: 36 });
});
с
$container.children('div').textfill({ maxFontPixels: 36 });