2010-08-16 62 views
2
$('document').ready(function(){ 
     $('[name=mycheckbox]').live('click', function(){ 
      if($(this).is(':checked')) 
      { 
       alert('it is checked'); 
      } 
      else 
      { 
       alert('it is not checked'); 
      } 
     }); 

     $('[name=mycheckbox]').click(); 
    }); 

如果复选框被选中和你点击它,警告框说,“未选中”,但是当页面运行和点击事件被触发(选中复选框),警告框会显示“已检查”。为什么?复选框的状态是否不受点击事件的影响?它改变了国家吗?有关问题的jQuery click()函数

回答

3

相反的click你应该在这里使用change事件,像这样:

$('[name=mycheckbox]').live('change', function(){ 

并用相同的触发调用它,就像这样:

$('[name=mycheckbox]').change(); 

clickchange分开,如果你希望事件发生时检查实际上有完成更改,那么你想要change,而不是click。另外,如果你想切换它从它的初始状态是,做到这一点:

$('[name=mycheckbox]').click().change(); 
0

取而代之的是现场活动(其中我发现最好是越野车)的尝试结合正常的点击甚至代替。我已经做了类似的事情,工作正常了。点击事件不.live(“点击”,

我希望帮助:S

+0

这不是问题。在复选框上,点击发生在更改之前。 – Jamiec 2010-08-16 15:36:31

+0

@Jamiec - 他对'live()'的关注呢? 'live()'真的有问题(除了主要问题)吗? – orokusaki 2010-08-16 15:39:38

+0

对我来说jamiec,它工作正常,所以我不认为是这样。 – Dorjan 2010-08-16 15:41:15

0

正在发生的事情是相当微妙

我有一个。按钮,复选框,链接到下面的代码:

$("#chkbx").click(function() { 

    if ($(this).is(':checked')) { 
     alert('checked'); 
    } 
    else { 
     alert('unchecked'); 
    } 
}); 

$("#MyButton").click(function() { 

    $("#chkbx").click(); 
}); 

当我点击复选框,正如你所期望的一切都显示

当我点击按钮,反之亦然。

发生什么事情是,当您单击复选框时,它会在执行代码之前触发默认的单击事件,因此您的代码将从默认的单击事件的后果中获取状态。

当您直接在元素上调用click方法时,它实际上是调用您的单击函数,然后执行默认事件。

我不是为什么这应该是。或者这是故意的还是一个错误。