javascript - jQuery .click() 不会触发,但 onclick 会触发

标签 javascript jquery

我在 jquery 中有一个 $each 循环,它向表中添加行,如下所示:

                $.each(result, function (index) {
                    var data = result[index];
                    cameraIcon = GetCameraIcon();
                    cameraIcon = cameraIcon.replace("$cameraId", data.CameraFQID);                       
                    var tr = "<tr><td>" + cameraIcon + "</td><td>" + icon + '</td><td>' + timestamp.format('DD/MM/YYYY HH:mm:ss') + '</td><td>' + data.DeviceLink + '</td><td>' + data.EventMessage + '</td><td>' + data.CardId + '</td></tr>';
                    $('#eventTable tr:first').after(tr);
                });

    function GetCameraIcon() {            
        return "<a href='javascript:;' class='cameraButton' id='$cameraId'><i class=\'fa fa-camera\'></i></a>";
    }

我的问题是:为什么我的 jquery 方法没有触发?

$(".cameraButton").click(function () {
            alert('clicked')
        });

但是,当我这样做时:

<a href='javascript:;' onclick=\"alert('clicked')\">

它有效。

我的猜测是某个地方出现了一些粗心的错误,但我无法查明或弄清楚

最佳答案

这可能是事件委托(delegate)。当 jQuery 绑定(bind)到其事件时,添加到表中的新行不存在,因此您必须使用 .on() 来捕获事件。

尝试:

$(document).on("click", ".cameraButton", function () {
     alert('clicked');
});

记住在语句末尾添加分号。

关于javascript - jQuery .click() 不会触发,但 onclick 会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372956/

相关文章:

jquery - foreach 引导 Accordion

javascript - jQuery Ajax 数据显示双重使用追加

javascript - 在 CKEditor 中键入时替换文本

javascript - 显示 2 后在 slider 中显示 1 张图片

javascript - 如何使用 jQuery 单击按钮来选择下拉列表中的所有值?

javascript - 这两种使用 jQuery 附加 DOM 元素的方法有何不同?

javascript - 动态 Twitter 分享按钮

javascript - Ext.window.MessageBox draggable false,调用hide方法出错

javascript - 如何从Cypress工具中的元素中获取值?

javascript - js中创建属性触发异常 'not a function'