关于动态加载的dom,change事件绑定无效的问题

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


问:tddiv.modal-body同样是select.weekdays的父元素,为何前者无效,后者有效?

阅读 6.3k
2 个回答

你的整个 div.modal-body 是动态加载的,还是只有 td 是动态加载的?
如果是后者,你就不能让 td 代理了吧

你的代码不完整,不知道具体是怎么动态加载的,有可能你执行

$("td").on("change","select.weekdays",function(){
    console.log("hello,world");
});

时,td元素都还不存在,所以实际上没有绑定上。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题