2016-12-26 60 views
0

我已經得到了被Rails中通過AJAX執行下面的腳本:jQuery的:選中/取消選中DOM元素

看來,只有第一個指定的選項(取消選中)的作品,在else語句內的部分做不行!

<% if params[:type] == "switch" %> 
    var obj = $('.<%= params[:name] %> a:not(.label) #myonoffswitch:checkbox'); 
    <% if params[params[:name]] %> 
     obj.prop('checked', false); 
    <% else %> 
     obj.prop('checked', true); 
    <% end %> 
<% elsif params[:type] == "checkbox" %> 
    <% if params[params[:name]] %> 
     $('.<%= params[:name] %> a:not(.label)').remove(); 
     $('.<%= params[:name] %>').prepend("<a data-remote='true' href='/update?name=<%= params[:name] %>&amp;<%= params[:name] %>=true&amp;type=checkbox'><i class='icon ion-android-checkbox-outline-blank' tabindex='0'></i></a>"); 
     $('.<%= params[:name] %> a:not(.label) i').focus(); 
    <% else %> 
     $('.<%= params[:name] %> a:not(.label)').remove(); 
     $('.<%= params[:name] %>').prepend("<a data-remote='true' href='/update?name=<%= params[:name] %>&amp;<%= params[:name] %>=false&amp;type=checkbox'><i class='icon ion-android-checkbox' tabindex='0'></i></a>"); 
     $('.<%= params[:name] %> a:not(.label) i').focus(); 
    <% end %> 
<% end %> 

DOM

 <div class="name flex"> 
     <a data-remote="true" href="/update?name=name&amp;name=false&amp;type=switch"><div class="onoffswitch"> 
      <input checked="" class="onoffswitch-checkbox" id="myonoffswitch" name="onoffswitch" type="checkbox"> 
      <label class="onoffswitch-label" for="myonoffswitch"></label> 
     </div> 
     </a> 
     <div class="label"> 
      <a class="abc label" data-remote="true" href="/update?name=name&amp;name=false&amp;type=switch">ABC 
      </a> 
      <p class="abc labeltext">Lorem ipsum.</p> 
     </div> 
     </div> 

     <div class="name1 flex"><a data-remote="true" href="/update?name=name1&amp;name1=true&amp;type=checkbox"> 
     <i class="icon ion-android-checkbox-outline-blank" tabindex="0"></i></a> 

     <div class="label"> 
      <a class="abc label" data-remote="true" href="/update?name=name1&amp;name1=false&amp;type=checkbox">ABC 
      </a> 
      <p class="abc labeltext">Lorem ipsum.</p> 
     </div> 
     </div> 

不過,我注意到,只有當複選框或開關進行檢查它得到選中,如果沒有選中它不會改變它的外觀(的DOM )。

我在做什麼錯?

回答

1

您需要刪除:checked selector。截至目前,你只得到checked複選框

使用

var obj = $('.<%= params[:name] %> a:not(.label) #myonoffswitch:checkbox'); 

,而不是

var obj = $('.<%= params[:name] %> a:not(.label) #myonoffswitch:checkbox:checked'); 
+0

我還只是能取消開關:/ – jonhue

+0

謝謝你的筆記,雖然,這是一個錯誤! – jonhue