使用复选框切换单击问题

时间:2010-12-07 10:58:11

标签: jquery toggle

请找到以下代码

$("#chkCopy").toggle(function () {
   copyDetails(); 
},
function () {
   emptyCopyDetails();
});

// functions which do not have any effect on the checkbox
function copyDetails() {

}

function emptyCopyDetails() {
}

问题是复选框未显示已检查状态。

Demo

提前致谢

4 个答案:

答案 0 :(得分:3)

.toggle()会中断检查,因为.toggle()实际为calls e.preventDefault() on the click event underneath。而不是那种方法,我推荐这样的东西:

$("#chkCopy").change(function () {
  if(this.checked) {
    copyDetails();
  } else {
    emptyCopyDetails();
  }
});

Here's an updated/working version of your demo with the above approach

答案 1 :(得分:2)

$("#chkCopy").change(function () {                alert("1");

            },
            function () {
                alert("2");
            });

使用更改而不是切换

答案 2 :(得分:1)

来自documentation

  

由于.toggle()内部使用了   点击处理程序来完成它的工作,我们必须   取消绑定click以删除行为   随附.toggle(),其他   click处理程序可以被捕获   交火。 实施也   在活动上致电.preventDefault(),   所以链接不会被遵循   按钮不会被点击如果   已经呼吁.toggle()   元件。

因此,如果要选中并取消选中复选框,则无法使用toggle()。您可以改为使用click()

$("#chkCopy").click(function() {
   if (this.checked) {
       copyDetails();
   } else {
       emptyCopyDetails();
   }
});

答案 3 :(得分:0)

看看这个答案你会做同样的事情

Jquery toggle event is messing with checkbox value