Я пытаюсь изучить CoffeeScript, создав небольшой плагин для jQuery, который будет перемещать тег div, чтобы держать его на экране. По какой-то причине я не могу получить «return this.each» для правильной работы. Я пробовал только основную структуру с страницы создания сценария jQuery, но это все равно не сработает. Есть ли что-то особенное, что я должен сделать, чтобы заставить это работать?jquery - this.each не исполняется
Я запускаю этот скрипт на Ruby 1.9.3 и Rails 3.2.2 с помощью рельсов (3.2.1) и jquery-rails (2.0.1).
CoffeeScript
$ = jQuery
defaults =
paddingTop: 10
$.fn.fixedTop = (options) ->
settings = $.extend defaults, options
this.each() ->
beginPoint = this.offset().top - settings.paddingTop
$(window).scroll() ->
scrollTop = $(window).scrollTop()
if beginPoint < scrollTop
$(this).css 'marginTop', (scrollTop-beginPoint)+settings.paddingTop
Сформирован JS
(function() {
var $, defaults;
$ = jQuery;
defaults = {
paddingTop: 10
};
$.fn.fixedTop = function(options) {
var settings;
settings = $.extend(defaults, options);
return this.each(function() {
var beginPoint;
beginPoint = this.offset().top - settings.paddingTop;
return $(window).scroll(function() {
var scrollTop;
scrollTop = $(window).scrollTop();
if (beginPoint < scrollTop) {
return $(this).css('marginTop', (scrollTop - beginPoint) + settings.paddingTop);
}
});
});
};
}).call(this);
Внутренние возвращения кажутся избыточными. стереть их, попробуйте еще раз и скажите, что произойдет. –
@elclanrs +1 для этого чувака. – Nemoy
они автоматически генерируются coffeescript, я пытался удалить возвращаемые данные и код не запускался. Я поставил точки останова по обе стороны от него. Каждый из них был запущен, а второй - нет. – Nick