复选框未取消选中

时间:2011-12-11 22:03:40

标签: jquery

我有这个代码并且它工作正常,但问题是当您再次单击它时复选框不会被删除,它只会在单击span.removePortfolio时被删除。谢谢!

<input type="checkbox" name="portfolio"/> 
<div>
   Has Portfolio <span class="removePortfolio">X</span>
</div>

$("input[name=portfolio]").change(function() {
    loadResults();
    checkPortStatus();
});    

$('span.removePortfolio').live("click", function() {
    $("input[name=portfolio]").removeAttr("checked");
    $('#portfolioRemove').hide();   
});

var portChecked = false;
function checkPortStatus() {
   if((portChecked) == true) {
        $("input[name=portfolio]").removeAttr("checked");
   }
}

function loadResults() {
    if($("input[name=portfolio]").attr("checked", "checked")) {
       portChecked = true;
    }

}

我只需要在用户点击它时检查复选框,再次点击它时取消选中,如果已选中并且用户点击了span.removePortfolio,则取消选中。

1 个答案:

答案 0 :(得分:0)

在元素失去焦点之前,Internet Explorer不会触发复选框的“更改”事件。改为使用“点击”。

此外,像这样操纵“已检查”属性并不是一个好主意。使用new(自1.6)“。prop()”方法:

$('input.whatever').prop('checked', true);  // make the element be checked
$('input.whatever').prop('checked', false); // make it be un-checked

并且执行此操作可能更快(如果jQuery选择器只有一个复选框):

$('input.whatever')[0].checked = false; // or true

编辑,您编写的代码似乎想要在单击时立即关闭复选框:

  1. 点击复选框,(暂时)检查
  2. “change”处理程序调用“loadResults()”,它将该标志(“portChecked”)设置为true。
  3. “checkPortStatus()”函数现在运行,并立即取消选中复选框。