javascript - 按钮的 ID 发生变化,但 document.ready 函数调用先前值的方法

标签 javascript jquery node.js events express

我正在使用 Express.js 编写一个简单的单页应用程序。页面底部是一个表单,该表单用于向表中添加用户,或者更新特定用户。 “提交”按钮将具有不同的功能,具体取决于按下按钮时的按钮 ID。

在我的 document.ready 函数中,我有两行感兴趣:

$('#btnAddUser').on('click', addUser);
$('#btnUpdateUser').on('click', updateUser);

我还有一些方法可以将此 id 的值从 #btnAddUser 更改为 #btnUpdateUser,反之亦然。我可以去换个ID。问题是 document.ready 函数似乎没有考虑这些更改。

例如,应用程序以 ID #btnAddUser 启动。然后我将其更改为具有 Id #updateUser,我可以看到这是有效的。但是,当我按下按钮时,会触发 addUser 方法而不是 updateUser 方法,我不确定为什么。

最佳答案

Pointy 的答案应该有效,但这是一个 X->Y problem 。您不应该尝试通过更改元素的 ID 来切换功能。

相反,在某个地方存储一个值来说明按钮应该做什么,然后使用它。如果需要,您可以在按钮上使用 data-* 属性:

<!-- Dynamically change  data-action  and  value  as needed -->
<input id="btnUserAction" type="button" data-action="add" value="Add" />
$('#btnUserAction').on('click', function (e) {
    var action = ($(this).data("action") === "add") ? addUser : updateUser;

    action.call(this, e);
});

或者,您可以有两个单独的按钮并显示/隐藏它们。任何一种方法都应该有效。

关于javascript - 按钮的 ID 发生变化,但 document.ready 函数调用先前值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641018/

相关文章:

javascript - 如果 Javascript 中有任何错误,如何让表单不提交

javascript - 如何在 Node.js 中添加 promise.all Sequelize findOrCreate 循环?

javascript - 在文件中搜索关键字,然后记录该行的其余部分

mysql - ' fatal error : getaddrinfo ENOTFOUND' - node. js mysql lambda

javascript - 如何使用户输入不受 span 元素颜色样式的影响

javascript - HTML 菜单上的 addClass/removeClass 不起作用

javascript - 在 jQuery Mobile 中,如何停止用省略号 chop 列表项?

javascript - 在叠加 div 上显示警告消息

jQuery Accordion 设置处于事件状态

javascript - 如何使用 javascript 和 Selenium 双击 WebElement