Coffeescript仅评估一次

时间:2015-05-31 06:16:21

标签: ruby-on-rails checkbox coffeescript

我想根据this findle创建一个全选复选框。我做了一个像这样的咖啡因:

$(document).on 'click','.select_all_clans', ->
  if $(this).is(':checked')
    $('.clan_checkbox').attr 'checked', true

但它仅在先前未选择check_box.clan_checkbox时才有效,并且仅检查一次。

这是我的表格:

<%= form_tag show_schools_path do %>
 <p>
   Wybierz klan/y: 
   Feniks: <%= check_box_tag 'clans[]','Feniks', (true if !@clans.nil? and @clans.include? 'Feniks'), class: "clan_checkbox" %>,
   Jednorożec: <%= check_box_tag 'clans[]','Jednorożec', (true if !@clans.nil? and @clans.include? 'Jednorożec'), class: "clan_checkbox" %>,
   Krab: <%= check_box_tag 'clans[]', 'Krab', (true if !@clans.nil? and @clans.include? 'Krab'), class: "clan_checkbox" %>,
   Lew: <%= check_box_tag 'clans[]', 'Lew', (true if !@clans.nil? and @clans.include? 'Lew'), class: "clan_checkbox" %>,
   Zaznacz Wszystkie: <%= check_box_tag 'select_all', 'nil', false, class: "select_all_clans" %>
 </p>
<%= submit_tag "Szukaj!" %>
<% end %>

我认为这是(true if !@clans.nil? and @clans.include? 'Lew')评估的结果。

我刚开始学习CS所以请尽可能详细解释:)

1 个答案:

答案 0 :(得分:0)

在这里,我希望这就是你要找的东西:

boxes = $('#checkboxlist [type=checkbox]')
selectAll = $('.selectall')    
toggleCheckboxes = ->    
    if $(this).is ':checked' then boxes.prop "checked", true else boxes.prop "checked", false

selectAll.on 'click', toggleCheckboxes

Fiddle

您应该将attr()更改为prop()

此处没有什么特别的事情,我们刚刚toggleCheckboxes()绑定了selectAll元素上的点击事件。

提示:下次为此类问题添加javascript标记时,您可以更快地获得解决方案,并且可以稍后将其转换回CS。