jQuery复选框.prop()问题

我有一个功能,在升级到jQuery 1.6.2之前工作得很好,但现在根本无法工作。 在过去,该函数使用.attr(“检查”) ,但我试图切换到.prop(“检查”) 。 我一直拉着我的头发,试图找出为什么我不能得到.prop(“检查”)返回一个值。

该函数用于隐藏实际复选框,并根据复选框的状态向父li添加或删除类。 之前有效的两件事情,不再有效。

  • 加载页面时,如果在HTML中将复选框设置为“checked”,则jQuery不会将适当的类应用于父项li
  • 当一个项目被点击时,它确实将底层复选框设置为选中状态,但是当再次点击时,ID未设置为未选中状态。
  • HTML

    <ul class="checkboxes">
        <li><input type="checkbox" name="boro[]" value="Bronx">Bronx</li>
        <li><input type="checkbox" name="boro[]" value="Brooklyn" checked>Brooklyn</li>
        <li><input type="checkbox" name="boro[]" value="Queens">Queens</li>
    </ul>
    

    jQuery的:

    $('ul.checkboxes').checkBoxes();
    
    $.fn.checkBoxes=function() {
        $ul=$(this);
        $ul.addClass("checkboxes").find("input:checkbox").hide();
        $ul.find("li").addClass($(this).find("input:checkbox").prop("checked")?"checked":"unchecked").click(function(e) {
         $(this).toggleClass("checked unchecked").find("input:checkbox").att("checked",!$(this).prop("checked"));
        )}
    )};
    

    感谢您的任何见解!


    你有一些错误:

    1)你需要在调用它之前定义你的函数checkBoxes

    2)不是一个真正的错误,但是当你已经在HTML中添加该类时,没有必要说addClass('checkboxes')。

    3) $(this).find("input:checkbox").prop("checked")这只会决定是否选中第一个复选框。 我几乎肯定你希望$(this)引用当前复选框,但它不在正确的范围内。

    4)你写att而不是attr

    5)你有一个额外的)在你的函数结束。

    这里是我相信做你想要的代码:

    $.fn.checkBoxes = function() {
       $(this)
          .addClass("checkboxes")
          .find("input:checkbox")
          .hide()
          .end() -- revert back to $(this)
          .find("li")
          .each(function(){
             $(this).addClass(
                $(this)
                  .find("input:checkbox")
                  .prop("checked") ? "checked" : "unchecked"
             );
          })
          .click(function(e) {
             var $cb = $(this)
                .toggleClass("checked unchecked")
                .find("input:checkbox");
             $cb.attr("checked", !$cb.prop("checked"));
          });
    };
    
    $('ul.checkboxes').checkBoxes();
    

    http://jsfiddle.net/cpvQ4/


    如果您的问题只是您发布的代码中的语法错误,请尝试以下操作(语法错误已更正):

    $.fn.checkBoxes=function() {
        $ul=$(this);
        $ul.addClass("checkboxes")
           .find("input:checkbox")
           .hide();
        $ul.find("li")
           .addClass($(this).find("input:checkbox").prop("checked")?"checked":"unchecked")
           .click(function(e) {
                $(this)
                    .toggleClass("checked unchecked")
                    .find("input:checkbox")
                    .attr("checked",!$(this).prop("checked"));
           });
    };
    
    $('ul.checkboxes').checkBoxes();
    
    链接地址: http://www.djcxy.com/p/4729.html

    上一篇: jQuery checkbox .prop() problem

    下一篇: Remove whitespaces inside a string in javascript