【问题标题】:jquery checkbox attr change seems not to workjquery 复选框属性更改似乎不起作用
【发布时间】:2011-03-31 10:29:41
【问题描述】:

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

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

【问题讨论】:

    标签: checkbox attr jquery-1.5


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      if (checkbox.is(':checked')) { checkbox.attr("checked", "checked"); } 别的 { checkbox.removeAttr("选中"); }

      【讨论】:

      • 不是这样。要么会工作。签出:jsfiddle.net/nbjV5。事实上,如果你alert($("#test1").attr("checked"));你会得到'true'或'false'
      【解决方案3】:

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

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

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

      【讨论】:

      • 将 alert() 添加到:if (checkbox.attr('checked')) 返回正确的值(true / false)
      • 我没有添加“alert()”。这是一个单独的代码行。例如 'alert($("search_discipline[7]").attr("type"))' 将显示标签属性 'name' 的值。如果不是,则“名称”的操作不成功。这种方式只是之前验证我的代码的一个测试。
      【解决方案4】:

      一些提示:

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

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

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

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

      【讨论】:

      • 1.是 2. 是 3. 与 witf href 相同 4. 是 从 FireBug 控制台运行脚本似乎工作正常
      • checkbox jQuery 集合中有多少对象。 (检查.length 属性)。此外,可能值得包含包含 #search_filters#discipline ID 的 HTML
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 2011-06-08
      • 2010-10-08
      • 1970-01-01
      • 2010-11-16
      • 2010-12-08
      • 2013-07-31
      相关资源
      最近更新 更多