嗨,我有一个像这样的coffeescript代码:
$(document).on 'keyup', '.content_length', ->
$(this).nextAll('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>
这是循环创建的一部分。带有(this).nextAll
的代码工作得很好,但它改变了所有char_counter div的walue。所以我的直觉告诉我指向正确的div有问题。
修改
我想我知道问题出在哪里。 “this”指的是输入元素,它嵌套在div中。我尝试选择一个div,它是输入文件所在的div的兄弟。
<div class="create_comment" >
<form class="new_comment" .../>
<div class="field_with_errors"><label for="comment_author">Autor:</label></div>
<div class="field_with_errors"><input class="form-control" type="text" name="comment[author]" id="comment_author" /></div>
<div class="field_with_errors"><label for="comment_content">Treść:</label></div>
<div class="field_with_errors"><input class="form-control content_length" type="text" name="comment[content]" id="comment_content" /></div>
<div class="char_counter">255</div>
<input type="submit" name="commit" value="Dodaj!" class="btn btn-primary" />
</form> </div>
答案 0 :(得分:0)
根据你的HTML,
.content_length
位于.field_with_errors
内,所以
我认为你必须首先得到父母,然后做下一个,如下所示:
$(document).on 'keyup', '.content_length', ->
$(this).parent().next('.char_counter').text(255 - $(this).val().length);
答案 1 :(得分:-1)
Runnable object as a normal instance variable to class A.
答案 2 :(得分:-1)
CoffeeScript是空间敏感的,缩进行$(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_counter:first').text(255 - $(this).val().length)
为:
$('.char_counter').text(255 - $(this).val().length)
,
如果没有.char_counter
类的其他成员,或者将其更改为ID并完成它:)