jQuery:当复选框被其他插件选中时,如何运行一段代码

jQuery:当复选框被其他插件选中时,如何运行一段代码,jquery,forms,Jquery,Forms,我正在编写一个小的复选框替换脚本,但我想将其与另一个允许复选框大规模切换的脚本一起使用,因此当a复选框设置为选中或取消选中时,我的代码必须更新,我已尝试使用change(),但如果复选框的属性发生更改,这将不起作用。这是一个bug,还是我的代码错了,还是必须使用其他东西 我已经剥离了插件中的所有代码,以确保没有任何东西阻止它。我没有任何错误 插件中的代码: $('input').change(function () { if($(this).is(':checked')){ /

我正在编写一个小的复选框替换脚本,但我想将其与另一个允许复选框大规模切换的脚本一起使用,因此当a复选框设置为选中或取消选中时,我的代码必须更新,我已尝试使用change(),但如果复选框的属性发生更改,这将不起作用。这是一个bug,还是我的代码错了,还是必须使用其他东西

我已经剥离了插件中的所有代码,以确保没有任何东西阻止它。我没有任何错误

插件中的代码:

$('input').change(function () {
   if($(this).is(':checked')){
      // run some code
   }else{
      // run some code
   }
}).change();

您不应该使用
.attr()

特别是检查:

属性和属性之间的差异在特定情况下可能很重要。在jQuery1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致不一致的行为。从jQuery1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性

所以您应该使用:
$(this.prop('checked')


在1.6之前,您应该使用:
$(this).is(“:checked”)
您不应该使用
.attr()

特别是检查:

属性和属性之间的差异在特定情况下可能很重要。在jQuery1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致不一致的行为。从jQuery1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性

所以您应该使用:
$(this.prop('checked')


在1.6之前,您应该使用:
$(this).is(“:checked”)

如果复选框是动态生成的,那么您需要使用live()或on()(这是在jQuery 1.7中引入的)

例如:

$('input[type="checkbox"]').live('change',function () {
   if($(this).is(':checked')){ //I like it using this way
      // run some code
   }else{
      // run another code
   }
});

编辑:在JSFIDLE中选中此示例:

如果复选框是动态生成的,则需要使用live()或on()(这是在jQuery 1.7中引入的)

例如:

$('input[type="checkbox"]').live('change',function () {
   if($(this).is(':checked')){ //I like it using this way
      // run some code
   }else{
      // run another code
   }
});


编辑:在JSFIDLE中检查这个示例:

您使用的是哪个版本的jQuery?1.6介绍了检查的最佳访问方式的详细信息。使用1.7,我更改了上面的代码,我确实使用了is而不是attr。即使没有if语句,代码也不会运行您正在使用哪个版本的jQuery?1.6介绍了检查的最佳访问方式的详细信息。使用1.7,我更改了上面的代码,我确实使用了is而不是attr。即使没有if语句,代码也无法运行是的,我知道,我通常使用is…但我出于某种原因更改了它…我的坏消息这是否解决了问题?或者更改处理程序根本没有运行?当脚本最初运行并注册处理程序时,
$('input')
的结果是什么?因此,当调用此代码时(当脚本加载到页面时?),您将选择所有输入并将匿名函数绑定到它们的更改事件。您当时是否选择了所有正确的元素?如果没有,您将需要根据@Arda的回答使用
.live()
。让我们知道是的,我通常使用的是……但我出于某种原因更改了此选项……我的坏消息解决了问题吗?或者更改处理程序根本没有运行?当脚本最初运行并注册处理程序时,
$('input')
的结果是什么?因此,当调用此代码时(当脚本加载到页面时?),您将选择所有输入并将匿名函数绑定到它们的更改事件。您当时是否选择了所有正确的元素?如果没有,您需要按照@Arda的回答使用
.live()
。让我们来批量切换复选框,您不需要其他脚本。使用JSFIDLE URL编辑我的代码,我想这正是您需要的。我已经构建了一个批量切换复选框脚本;)谢谢:)在我看到你的全部代码之前,我不能确切地看到问题在哪里/在哪里有冲突。我只是将其编码,以表明通过这种方式,它们不会冲突。这对你有用吗?这很有用,但只有当我点击复选框时,如果你批量切换框,它不会做任何事情,并且当其他代码选中/取消选中一个或多个复选框时,我需要运行我的代码。以上代码为全部代码;)那么,您需要将其嵌入到您自己的“mass checker”脚本中,而您并没有提供该脚本。我在我的代码上创建了一个事件处理程序,您可以在大规模选择/取消选择完成后添加任何代码。e、 g单击此处:单击“批量检查”后,我将全部检查并发出警告消息。你可以做任何其他事情。另外,如果您只想批量选中特定的复选框,请使用rel属性或其他内容将它们分组。示例:要批量切换复选框,不需要其他脚本。使用JSFIDLE URL编辑我的代码,我想这正是您需要的。我已经构建了一个批量切换复选框脚本;)谢谢:)在我看到你的全部代码之前,我不能确切地看到问题在哪里/在哪里有冲突。我只是将其编码,以表明通过这种方式,它们不会冲突。这对你有用吗?这很有用,但只有当我点击复选框时,如果你批量切换框,它不会做任何事情,并且当其他代码选中/取消选中一个或多个复选框时,我需要运行我的代码。以上代码为全部代码;)那么,您需要将其嵌入到您自己的“mass checker”脚本中,而您并没有提供该脚本。我在我的代码上创建了一个事件处理程序,您可以在大规模选择/取消选择完成后添加任何代码。e、 g单击此处:单击“批量检查”后,我将全部检查并发出警告消息。你可以做任何其他事情。另外,如果您只想批量选中特定的复选框,请使用rel属性或其他内容将它们分组。例子: