2011-05-17 56 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" />