Coffeescript'点击'问题

时间:2014-06-08 18:53:11

标签: javascript ruby-on-rails coffeescript

我正在尝试使用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;

  })();

如果有人能向我解释我做错了什么就会很棒!

1 个答案:

答案 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