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%的情况下,这并不重要,因为大多数脚本函数都很重要,因为会产生副作用。不添加空返回,因此避免隐式返回不仅是一个坏习惯,但会导致严重的内存问题,在节点上,也在浏览器中。