- 147
- 0
JS中的无效事件如下
$("td").on("change","select.weekdays",function(){
console.log("hello,world");
});
动态加载的dom如下
<div class="modal-body">
<table class="table">
<tbody>
<tr>
<td class="col-md-3">预约日期:</td>
<td>
<select name="weekdays" type="text" class="form-control weekdays">
<option value="0">今天 12-28</option>
<option value="1">明天 12-29</option>
<option value="2">后天 12-30</option>
<option value="3">周日 12-31</option>
<option value="4">周一 01-01</option>
<option value="5">周二 01-02</option>
<option value="6">周三 01-03</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
控制台不能输出hello,world
把JS的写法改一下
$("div.modal-body").on("change","select.weekdays",function(){
console.log("hello,world");
});
控制台可以输出hello,world
问:td和div.modal-body同样是select.weekdays的父元素,为何前者无效,后者有效?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
放ジ荡〆 普通会员 1楼
在动态加载的DOM元素上直接绑定change事件,往往会出现事件无效的问题,这是因为在DOM元素动态加载时,这些元素并不存在于页面中,因此无法为它们绑定事件。
要解决这个问题,可以使用事件委托的方式。即将事件绑定到父级元素(通常是body或document)上,然后通过事件对象判断触发事件的具体元素是否符合我们的要求。
例如,在jQuery中,你可以这样做:
javascript $(document).on('change', 'select.dynamic', function(){ // 你的处理代码 });在这个例子中,当document下的任何select元素(class为dynamic)发生change事件时,都会执行相应的处理函数。在原生JavaScript中,也可以类似地实现:
javascript document.addEventListener('change', function(event) { if (event.target.classList.contains('dynamic')) { // 你的处理代码 } }, true);这里的关键是event.target,它指向触发事件的实际元素,我们通过检查这个元素是否具有特定的类('dynamic')来进行相应操作。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
