繁体   English   中英

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

[英]jQuery .click() doesn't fire but onclick does

我在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')\">

有用。

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

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

尝试:

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

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

如果动态添加元素,则需要on方法on使用委托事件。 这应该可以解决问题

$(document).on('click', '.cameraButton', function() {
    ...
}

直接事件将不起作用,因为在执行语句$(".cameraButton").click(function () {}元素必须已经存在于页面上。

考虑到$(".cameraButton")返回一个空数组,以防万一.cameraButton没有元素,因此click绑定为空。

尝试这个

document.getElementById("cameraId").addEventListener("click", function(){
alert("Hello World!");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM