3

我写的下面的代码应该有一行复选框,当被选中时,在单独的 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负责在选择/取消选择时显示标签(这很草率,所有复选框稍后都将从数据库中填写,这只是我的问题的一般概念的一些地方保存代码。)

这两个功能似乎都不起作用,点击功能至少会触发,但实际上并没有隐藏任何东西。有任何想法吗?

$(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;
      }
    });
  });
});
4

2 回答 2

2

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

if ($(this).prop('checked')) {
    ...
    $(this).prop('checked', false);
于 2013-02-23T00:11:14.653 回答
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/

于 2013-02-23T00:25:24.417 回答