我正在尝试使用Coffeescript,但我发现它非常令人沮丧。
我今天早些时候有这个脚本工作。我很确定没有任何改变。
脚本是:
ready = ->
class SortByLetter
$('.letter').click ->
selectedletter = $(this).text()
$('.location').hide()
$("[id^="+selectedletter+"]").show()
$(document).ready(ready)
$(document).on('page:load', ready)
这对应的导轨位是:
<div class="alphabet">
<%@findletter.each do |letter|%>
<div class="letter"><a href="#" onclick="return false;"><%=letter%></a></div>
<%end%>
</div>
提取时输出正常,并放在“脚本”标记中。
<script>
$('.letter').click(function() {
var selectedletter;
selectedletter = $(this).text();
$('.location').hide();
return $("[id^=" + selectedletter + "]").show();
});
</script>
编辑:这是咖啡脚本的完整输出
(function() {
var AjaxLocationSearch, SortByLetter, ready;
ready = function() {};
SortByLetter = (function() {
var showall;
function SortByLetter() {}
$('.letter').click(function() {
var selectedletter;
selectedletter = $(this).text();
$('.location').hide();
return $("[id^=" + selectedletter + "]").show();
});
showall = $('.showall');
showall.click(function() {
return $('.location').show();
});
return SortByLetter;
})();
如果有人能向我解释我做错了什么就会很棒!
答案 0 :(得分:0)
从您的编译输出中可以明显看出,您提供的一些缩进问题并未由您提供的CoffeeScript源代码反映出来。尽管您的类似乎在ready
函数中缩进,但您的ready
函数为空:
ready = function() {};
{DOM}准备好之前,class SortByLetter
定义中的内容正在执行,在<{strong>之外 $(document).ready
回调。这是你问题的根源。
说到你的class SortByLetter
......它在做什么?如果您只是尝试调用单个函数,则没有理由创建类。您的ready
处理程序应为:
$ ->
$('.letter').click ->
selectedletter = $(this).text()
$('.location').hide()
$("[id^="+selectedletter+"]").show()
目前,您正在创建一个类,然后使用它 nothing 。