取消选中复选框并在单击按钮时隐藏父项

时间:2013-02-23 00:08:26

标签: jquery html twitter-bootstrap

我编写的以下代码应该有一行复选框,选中后,会在单独的div中显示该复选框的标签。

     <div class="span3" id="bill">
          <label class="checkbox">
            <input type="checkbox" value="" id="item1" checked="checked">
            Item1 - Price
          </label>
          <label class="checkbox">
            <input type="checkbox" value="" id="item2" checked="checked">
            Item2 - Price
          </label>
        </div>
        <div class="span3" id="currBill">
          <label id="item1_lb">
            Item1 - Price
          </label>
          <label id="item2_lb">
            Item2 - Price
          </label>
        </div>
      </div>
      <div class="row-fluid">
        <button class="btn" id="pay">Pay</button>
      </div>

以下js负责在选择/取消选择时显示标签(知道这一点很麻烦,以后所有的复选框都会从数据库填写,这只是一些地方,为我的问题的一般概念保存代码。 )

这两个函数似乎都没有工作,on click函数至少触发,但实际上并没有隐藏任何东西。有什么想法吗?

$(function() {
  $('input:checkbox').bind('change',(function() {
    $('#'+ithis.id+'_lb').toggle($(this).is(':checked'));
  });

  $("#pay").click(function() {
    $("#bill input[type=checkbox]").each(function() {
      if($(this).checked)
      {
        $(this).parent().hide();
        $(this).checked = false;
      }
    });
  });
});

2 个答案:

答案 0 :(得分:2)

$(this).checked尝试访问jQuery集合属性checked。您可以通过.prop方法更改元素属性。

if ($(this).prop('checked')) {
    ...
    $(this).prop('checked', false);

答案 1 :(得分:1)

您应该使用浏览器控制台检查错误(按Ctrl+Shift+J)。您有以下错误:

  • 在第2行('change',(function()中,删除function关键字前的括号。
  • ithis.id应为this.id
  • 相反,检查if($(this).checked)应该像您先做的那样:if($(this).is(':checked'))
  • 要取消选中该复选框,请使用$(this).prop('checked', false);

小提琴: http://jsfiddle.net/qKPGd/