You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何选择指定div内的input/select元素及修复jQuery change事件失效问题

我来帮你一步步解决这两个问题:

问题1:如何通过ID或类选择单个/多个div内部的所有input和select元素?

你可以通过后代选择器结合选择器分组来实现,这里有几种常用且易维护的写法:

  • 通过ID选择单个div内的目标元素:
    如果要选中ID为targetDiv的div下所有层级的input和select,两种写法都可行:

    // 写法1:直接使用分组选择器
    $('#targetDiv input, #targetDiv select')
    // 写法2:用find()简化代码,可读性更强
    $('#targetDiv').find('input, select')
    
  • 通过类选择多个div内的目标元素:
    如果要选中所有带有targetClass类的div下的input和select,逻辑类似:

    // 写法1:直接分组选择器
    $('.targetClass input, .targetClass select')
    // 写法2:用find()批量查找
    $('.targetClass').find('input, select')
    

核心逻辑:逗号,用于选择器分组,可以同时匹配多种元素;空格表示后代选择,会选中该容器下所有层级的目标元素(不管是直接子元素还是嵌套更深的)。


问题2:修复检测goaldiv内字段change事件的jQuery代码

先拆解你的问题:你想监听id="goaldiv"的div内字段的change事件,但原脚本失效的原因很明确——选择器写错了,结合你的HTML代码,我来帮你修正:

先整理你的HTML结构(方便查看):

<div id="goaldiv">
  <div id="mygoaldiv">
    <div id="my0Div" class="goalv">
      <input type="hidden" value="0" name="hddgoal_id[]" class="goalid">
      <div class="col-sm-3 col-md-3 col-lg-3 form-pad-bot">
        <select name="goal_id[]" class="form-control " aria-required="true">
          <option value=""> Select Goal</option>
          <option value="1" > vacation</option>
          <option value="2" > child marriage</option>
        </select>
      </div>
      <div class="col-sm-3 col-md-3 col-lg-3 form-pad-bot">
        <input value="" placeholder="Goal Year" class="goal_date form-control inputText" type="text" name="goal_date[]" >
      </div>
    </div>
  </div>
</div>

原脚本的两个关键问题:

  1. 你的HTML里根本没有id="fhcform"的元素,但你却用了#fhcform作为选择器前缀,导致完全找不到目标元素;
  2. jQuery的.on()方法第二个参数是上下文/委托选择器,你把第二个选择器#fhcform .goalv select放在这里是错误用法,正确的分组选择器应该写在同一个字符串里。

修正后的代码:

写法1:直接选中静态元素绑定事件

如果你的元素是页面加载时就存在的静态元素,用这种写法即可:

// 选中goaldiv下所有goalv类容器里的input和select
$('#goaldiv .goalv input, #goaldiv .goalv select').on('change', function(eve) {
    alert($(this).val());
});

写法2:事件委托(推荐,支持动态添加的元素)

如果后续会通过JS动态添加.goalv里的input/select,用事件委托更可靠——把事件绑定在父容器#goaldiv上,监听子元素的事件:

$('#goaldiv').on('change', '.goalv input, .goalv select', function(eve) {
    alert($(this).val());
});

这样修改后,当你选择下拉选项或者修改输入框内容时,就能正常触发change事件并弹出对应的值了。


内容的提问来源于stack exchange,提问作者shashikant kuswaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:46:21