javascript - 如何在javascript中添加一个按钮(带有类属性)点击回调

标签 javascript jquery html

我有一个关于与 javascript 回调交互的 html 类属性的问题。

假设我有一个表格,每一行都有一个这样的按钮:

<table border="0">
<?php foreach ($itemlist as $item => $value): ?>
    <tr>
        <td><?php echo $item;?></td>
        <td><button class="create-user">Test</button></td>
    </tr>
<?php endforeach; ?>
</table>

请注意,该按钮的类属性为“create-user”。现在我想为每个按钮添加相同的回调:

var btn = document.getElementsByClassName("create-user");
btn.click(function() {
    $("#dialog-form").dialog("open");
});

我预计对话框会打开,但没有任何响应。这是我第一次与 javascript 一起处理类属性。

谁能给我一些启发?

谢谢!

最佳答案

getElementsByClassName 返回一个类似数组的集合(技术上是一个 nodeList)。要向您的元素添加事件处理程序,您必须循环遍历它们:

var buttons = document.getElementsByClassName("create-user");
var count = buttons.length;

while ( count-- ) {
    buttons[ count ].onclick = function () {
        $("#dialog-form").dialog("open");
    };
}

但是,由于您使用的是 jQuery,因此您应该使用 jQuery 来选择您的元素,这不需要显式循环:

$(".create-user").click(function() {
    $("#dialog-form").dialog("open");
});

附言为了提高性能,请记住缓存您的选择器:

var $dialog = $("#dialog-form");
$(".create-user").click(function() {
    $dialog.dialog("open");
});

关于javascript - 如何在javascript中添加一个按钮(带有类属性)点击回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222333/

相关文章:

javascript - 使用 JavaScript 或 jQuery,如何将名称-值对字符串转换为对象?

javascript - 如何在 asp.net 中注销后禁用浏览器的后退功能?

javascript - 尝试通过用户输入在 javaScript 中触发事件

html - 动态生成的 super 菜单布局

javascript - 同时循环遍历两个数组,并使用 Angular js [Angular 新手] 将每个数组的第一个元素一次传递给函数

javascript - Jquery POST JSON 数据到 Python 后端

javascript - 我的数据库数据未显示在 jQuery 数据表中

javascript - 将处理程序附加到窗口滚动事件

html - 仅使用 CSS 更改表格行中的布局

javascript - 使用 javascript 设置页面加载时的输入值