1

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

使用 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

4 回答 4

1

“checked”属性的值应该是“checked”:

if (checkbox.is(':checked'))
{
    checkbox.attr("checked", "checked");
} 别的 {
    checkbox.removeAttr("选中");
}
于 2011-03-31T10:31:50.770 回答
1

只有两个有用的想法来检查属性的变化:

  • 首先编写纯 HTML,不要使用 Javascript。它奏效了吗?如果有,那就用js写吧
  • 如果您修改了 html 标记,请调用该属性本身,以便检查您的代码是否执行良好。例如。alert($({your target object}).attr({the attribute which added}));

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

于 2011-03-31T10:44:31.427 回答
1

我自己也遇到了这个。在 jQuery 1.5.1 和 1.5.2 中设置属性似乎checked有点错误。我有更好的运气$(':checkbox').val(boolean)(这甚至更容易)。

更新:经过一番挖掘,似乎 webkit 检查器实际上并没有checked在 DOM 中显示该属性,但 jQuery 可以正确读取/写入它。很奇怪。适合我为开发人员使用每晚的 webkit 构建。

于 2011-04-25T15:14:47.270 回答
0

一些指示:

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

  2. 你还记得.next()返回兄弟姐妹吗?

  3. 如果删除 会发生什么href='#'

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

于 2011-03-31T10:47:56.963 回答