【问题标题】:Jquery capturing multiple form events in one line?Jquery在一行中捕获多个表单事件?
【发布时间】:2025-12-14 12:10:01
【问题描述】:

我有以下内容来捕获 id="form1" 的表单的复选框检查事件:

$('#form1 :checkbox').click(function() {
  var $this = $(this);
  alert($this.val());
}

我现在有另一个表单 (id="form2"),其中包含我需要处理事件的复选框。有没有办法将这两种形式组合成一行并让alert 仍然弹出正确的值?即类似

$('#form1 OR #form2 :checkbox').click(function() {
  var $this = $(this);
  alert($this.val());
}

【问题讨论】:

    标签: javascript jquery checkbox


    【解决方案1】:

    你可以像这样使用multiple-selector

    $('#form1 :checkbox, #form2 :checkbox').click(function() {
    

    或者.find(),让它更短一点,像这样:

    $('#form1, #form2').find(':checkbox').click(function() {
    

    【讨论】:

    • 看起来你先回答了(几秒钟),所以我会接受你的回答。谢谢
    【解决方案2】:

    试试这个:

    $('#form1, #form2').find('input:checkbox').click(function() { ... });
    


    编辑:这是一个旁注,但使用 'input:checkbox' 而不是 ':checkbox'。这允许选择器引擎仅过滤作为复选框的 input 标记,而不是作为复选框的 all 标记,因此速度要快得多。

    【讨论】:

      【解决方案3】:

      有什么办法可以结合这两种形式 成一行并发出警报 还是弹出正确的值?

      是的:

      使用逗号

      $('#form1 :checkbox, #form2 :checkbox').click(function() {
        var $this = $(this);
        alert($this.val());
      };
      

      或者使用add方法

      $('#form1 :checkbox').add('#form2 :checkbox').click(function() {
        var $this = $(this);
        alert($this.val());
      };
      

      更多信息:

      【讨论】: