我想通过为jQuery创建一个小插件来学习CoffeeScript,该插件将移动div标记以将其保留在屏幕上。出于某种原因,我无法使'return this.each'正常运行。我已经尝试了jQuery插件创作页面的基本结构,但仍然无法工作。有什么特别的,我必须做的才能使这个工作?jquery - this.each不执行
我在Ruby 1.9.3和Rails 3.2.2上使用了咖啡栏(3.2.1)和jquery-rails(2.0.1)gems运行这个脚本。
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);
内部回报似乎是多余的。擦除它们,再试一次并告诉我会发生什么。 – 2012-03-18 07:15:46
@elclanrs +1为那个家伙。 – Nemoy 2012-03-18 07:16:32
他们是由coffeescript自动生成的,我试图删除返回和代码没有运行。我在回报的这一边放置了断点,第一个被触发,但第二个不是。 – Nick 2012-03-18 07:21:50