开发者社区> 问答> 正文

js修改id后无法触发事件

比如一个按钮的id是secondary_search
因为某个事件我把这个按钮的id换成了batch_secondary_search

但是这时候

$('#appointForm').on('click','#batch_secondary_search',function(){}
无法触发

触发的还是

$('.modal-footer #secondary_search').on('click',function(){
这是为啥

展开
收起
小旋风柴进 2016-05-31 09:13:32 2152 0
1 条回答
写回答
取消 提交回答
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="script/jquery_2_1_3/jquery-2.1.3.min.js"></script>
        <script>
            $(function(){
    
                $('.modal-footer #secondary_search').on('click',function(){
                    console.log('#secondary_search click');
                });
    
                $('#appointForm ').on('click','#batch_secondary_search',function(){
                    console.log('#batch_secondary_search click');
                });
    
                $('#changeButton').on('click',function(){
                    console.log('changeButton');
                    $('#secondary_search').attr("id","batch_secondary_search");
                });
            });
        </script>
    
    </head>
    <body>
    <from id="appointForm" onsubmit="javascript:return false;">
        <div class="modal-footer">
        <button id="secondary_search">ButtonA</button>
    
        </div>
        <button id="changeButton">Change[ButtonA]ID</button>
    </from>
    </body>
    </html>

    在修改ID前点击按钮#secondary_search(ButtonA),将输出 #secondary_search click
    点击#changeButton按钮,修改原#secondary_search(ButtonA)按钮的ID为batch_secondary_search后,
    再点击ButtonA,将输出#secondary_search click和#batch_secondary_search click

    我们看到原绑定到ButtonA事件一并被触发了,这是因为$('.modal-footer #secondary_search').on('click'执行后将click的回调函数绑定到ButtonA这个DOM元素上了,只要这个DOM元素存在,无论其属性怎么变化,只要可被点击,click回到函数就会被执行

    $('#appointForm ').on('click','#batch_secondary_search'事件添加到#appointForm这个DOM元素上,利用事件冒泡机制,当#appointForm这个DOM元素下的子元素发生点击事件后,回去判断当前冒泡到的DOM元素是否符合#batch_secondary_search这个selector的要求,如果符合,绑定的事件回调函数就被执行,如果不符合,就会跳过这个DOM元素~~~

    2019-07-17 19:21:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载