Javascript Coffescript未指向正确的元素

Javascript Coffescript未指向正确的元素,javascript,jquery,coffeescript,Javascript,Jquery,Coffeescript,嗨,我有一个咖啡脚本代码如下: $(document).on 'keyup', '.content_length', -> $(this).nextAll('div.char_counter:first').text(255 - $(this).val().length); $(document).on 'keyup', '.content_length', -> $(this).find('div.char_counter:first').text(255 - $(this)

嗨,我有一个咖啡脚本代码如下:

$(document).on 'keyup', '.content_length', ->
$(this).nextAll('div.char_counter:first').text(255 - $(this).val().length);
$(document).on 'keyup', '.content_length', ->
  $(this).find('div.char_counter:first').text(255 - $(this).val().length)
它应该是这个代码的组成部分,起作用的是:

<div class="create_comment" >
  <%= form_for(announcement.comments.create, url: announcement_comments_path(announcement.id) ) do |form| %>
    <%= form.label :author, "Autor:" %>
    <%= form.text_field :author, class: "form-control" %>

    <%= form.label :content, "Treść:" %>
    <%= form.text_field :content, class: "form-control content_length" %>
    <div class="char_counter">255</div>
    <%= form.submit "Dodaj!", class: "btn btn-primary" %>
  <% end %>
</div>

CoffeeScript对空间敏感,缩进行
$(this).nextAll('div.char\u counter:first')。文本(255-$(this.val().length)
如下:

$(document).on 'keyup', '.content_length', ->
$(this).nextAll('div.char_counter:first').text(255 - $(this).val().length);
$(document).on 'keyup', '.content_length', ->
  $(this).find('div.char_counter:first').text(255 - $(this).val().length)
或者使用内联版本

$(document).on('keyup', '.content_length', -> $(this).find('div.char_counter:first').text(255 - $(this).val().length))
同样在CS中,您不需要
在语句之后,可能会将
nextAll()
更改为
find()
closest()
,如其他答案所示

编辑:

在更好地阅读之后,你应该改变
$(this.nextAll('div.char\u counter:first').text(255-$(this.val().length)

致:

$('.char_counter').text(255-$(this.val().length)
,

如果没有
.char\u counter
类的其他成员,或者将其更改为ID并完成:)

根据您的html,
.content\u length
字段中,有错误,所以
我认为您必须先找到家长,然后再进行下一步,如下所示:

$(document).on 'keyup', '.content_length', ->
  $(this).parent().next('.char_counter').text(255 - $(this).val().length);

缺少返回将导致返回函数中的
$(this)
块,
this
将是咖啡中的
@
,我只是觉得OP缺少缩进。在我看来,在这种情况下,返回或不返回是品味的问题(与
@
this
相同)。如果我错了,请纠正我,但您的解决方案可以使用或不使用显式
返回
,执行隐式返回是CS设计决策,在95%的情况下,这并不重要,因为大多数脚本函数都很重要,因为会产生副作用。不添加空返回,因此避免隐式返回不仅是一个坏习惯,但会导致严重的内存问题,在节点上,也在浏览器中。