jquery复选框attr更改似乎无法正常工作

时间:2011-03-31 10:29:42

标签: checkbox attr jquery-1.5

有没有人知道为什么这段代码似乎不起作用? 我做错了什么?

使用JQuery 1.5.1。

JS代码:

$('#search_filters #discipline a').click(function(){

    var checkbox = $(this).next(':checkbox');

    if (checkbox.attr('checked')) {
        checkbox.attr("checked", true);
    } else {
        checkbox.attr("checked", false);
    }

    $(this).children('img').toggleClass("active");

    return false;
});

HTML:

<li>
    <a href="#">
        <img class="inactive" alt="Football" src="/images/disciplines/e9bc7681813110c/thumb.png">
    </a>
    <input type="checkbox" name="search_discipline[7]" value="1" class="search_discipline">
</li>

4 个答案:

答案 0 :(得分:1)

应选中“已检查”属性的值:

if (checkbox.is(':checked'))
{
    checkbox.attr("checked", "checked");
} else {
    checkbox.removeAttr("checked");
}

答案 1 :(得分:1)

检查属性更改只有两个有用的想法:

  • 首先编写纯HTML,不使用Javascript。它有用吗?如果是这样,那么用JS
  • 如果您修改了html标记,则会调用该属性本身,以便检查您的代码是否已执行良好。 E. g。 alert($({your target object}).attr({the attribute which added}));

这就是我在大多数情况下所做的事情。

答案 2 :(得分:1)

我自己就碰到了这个。似乎在jQuery 1.5.1和1.5.2中设置checked属性有点儿麻烦。我对$(':checkbox').val(boolean)好运(这更容易)。

更新:经过一番挖掘后,似乎webkit检查器实际上并未显示DOM中的checked属性,但jQuery正确读取/写入。很奇怪。为我提供开发使用每晚webkit构建的权利。

答案 3 :(得分:0)

一些指示:

  1. $('#search_filters #discipline a')将选择从a下降的#discipline下降的所有#search_filters元素。这是你的欠款吗?

  2. 您是否记得.next()返回兄弟姐妹。

  3. 如果删除href='#'

  4. 会怎样?
  5. 您的点击事件是否会触发?