javascript - Jquery:删除 $ ('#id' ).on(...) 元素的 id 更改时的监听器

标签 javascript jquery html post

我正在尝试更改已提交的 HTML 表单提交按钮的功能(通过更改表单的 ID)以用作切换按钮。但是,当表单的 id 更改时,on('submit',function) 不会更新并且仍然被调用,尽管 id 不再绑定(bind)到表单。 update_favourite(...) 在 AJAX 函数中被调用,但为了简单起见,我已从此代码段中删除了 AJAX

                $('#add_favourite').on('submit', function(event){
                    event.preventDefault();
                    console.log('add');
                    update_favourite('add');
                });

                $('#remove_favourite').on('submit', function(event){
                    event.preventDefault();
                    console.log('remove');
                    update_favourite('remove');
                });


                function update_favourite(addOrRemove) {
                     if($('#add_favourite').length){
                        $('#remove_favourite').attr("onclick","");
                        $('#submitbutton').val('Remove from Favourites');
                        $('#add_favourite').attr("id","remove_favourite"); 
                    /*This doesn't make a difference
                        $('#remove_favourite').on('submit', function(event){
                            event.preventDefault();
                            console.log('remove');
                            update_favourite('remove');
                        });
                    */

                    }
                    else if($('#remove_favourite').length){
                        $('#remove_favourite').attr("onclick","");
                        $('#submitbutton').val('Add to Favourites');
                        $('#remove_favourite').attr("id","add_favourite");  
                    /*This doesn't make a difference 
                        $('#add_favourite').on('submit', function(event){
                            event.preventDefault();
                            console.log('add');
                            update_favourite('add');
                        });

                   */
                    }

                };

我的实现正确地更改了提交按钮和表单 ID,但是 onclick 监听器不会随着 ID 的更改而更改。任何建议/更正将不胜感激!

最佳答案

有人发布了正确的答案,但在我尝试之前将其删除,经过一番尝试后,我能够实现我认为已删除的答案告诉我的内容。

他们的答案是将 $('#add_favourite').on('submit', function(event){ 更改为 $(document.body).on('submit', '#add_favourite', function(event){ 并添加 $(document.body).off('submit', 'remove_favourite'); 以移除监听器。

无论原评论者发生了什么,谢谢!

关于javascript - Jquery:删除 $ ('#id' ).on(...) 元素的 id 更改时的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610015/

相关文章:

liferay - 根据 Liferay 搜索容器中数据库的条件禁用行

JavaScript - 返回 [object Object]

javascript - 如何在 jQuery 中粘贴时保持文本格式?

javascript - 在本地存储中保存 css 显示值

html - Next.js 从/到另一个页面重定向

javascript - 使用复选框显示/隐藏标记传单

javascript - 溢出隐藏元素

javascript - 如何从内容中获取数字

javascript - 使用数据创建菜单

javascript - 仅获取数组的一个元素及其子元素