2011-05-17 88 views
1

我有這個基本的HTML結構:獲取輸入的「檢查」狀態

<fieldset> 
    <input/> 
    <label></label> 
    <div class="toggle_box"> 
     <div class="switch"></div> 
    </div> 
</fieldset> 

,我想這個時候我的輸入被檢查的情況發生:

<fieldset> 
    <input checked="checked" /> 
    <label></label> 
    <div class="toggle_box"> 
     <div class="switch" state="on"></div> 
    </div> 
</fieldset> 

添加狀態=「開」到切換div。 jQuery中有沒有選擇器可以用來獲取特定輸入的選中狀態? (頁面上有多個)。

感謝您的頭腦風暴!

回答

3

This works;您需要將type="checkbox"添加到您的輸入中,以使它們成爲複選框。 (用Chrome的開發者工具或Firebug的檢查switchdiv小號觀察效果。)

$('fieldset input[type=checkbox]').change(function() { 
    var el=$(this).parent().find('.switch'); 
    if ($(this).is(':checked')) el.attr('state','on'); 
    else el.removeAttr('state'); 
}); 
+0

@josh這應該工作太對了:$( '字段集輸入[類型=複選框]:選中')。父()找到( '.switch')。attr('state','on'); ??? – cmplieger 2011-05-17 03:03:42

+0

@josh,只是要知道,我們可以使用DIV標記屬性'狀態'嗎?或者我們可以使用任何像「foo」,「bar」,.. – Hoque 2011-05-17 03:13:46

+0

@SnippetSpace:取決於你在做什麼。當該代碼行被執行時,這隻會將「'=」on「添加到與被檢查的輸入*相關聯的'div'。如果你是通過提交功能來完成這項工作的,那就很好。在上面,我註冊了一個事件處理程序(通過'change()'),以便在用戶選中或取消選中複選框時動態更新'state'屬性。 – josh3736 2011-05-17 03:14:46

1

你可以把所有這些div另一格內,然後用* *的document.getElementById,找得到父親的div你想要的內容和改變他。

<div id="fatherOfTheDivs"> 
     <fieldset> 
      <input/> 
      <label></label> 
      <div class="toggle_box"> 
       <div id="div1" class="switch"></div> 
      </div> 
     </fieldset> 

     <fieldset> 
      <input/> 
      <label></label> 
      <div id="div2" class="toggle_box"> 
       <div class="switch"></div> 
      </div> 
     </fieldset> 
</div> 
0

這將爲您完成。

$('input:checkbox').change(function() { 
    if ($(this).is(':checked')) { 
     $(this).parent().children('div.toggle_box').children('div.switch').attr('state', 'on'); 
    } else { 
     $(this).parent().children('div.toggle_box').children('div.switch').removeAttr('state'); 
    } 
}); 

您還可以修改您的<input /><input type="checkbox" />