如何使用 jQuery 捕获动态添加的输入 HTML 元素上的鼠标悬停事件?

发布于 2024-09-12 23:22:16 字数 3655 浏览 4 评论 0原文

我正在使用 inputDataElementsid 动态地将 input 元素添加到 table 中。

这些 input 元素的名称为 deleteAction

function renderInputDataRows(inputData) {                                                                                                                                                                                                                                                  
    var rows = "";                                                                                                                                                                                                                                                                         
    for (var i = 0; i < inputData.length; i++) {                                                                                                                                                                                                                                           
        rows += '<tr>' +                                                                                                                                                                                                                                                               
            // ...  
            '<td class="rowActions">' + \
            '<input type="image" ' + \
            '      style="position:relative; ' + \
            '               bottom:-2px; ' + \
            '                 left:-4px; ' + \
            '        padding-right:2px;" ' + \
            '       src="images/delete.png" ' + \
            '   onClick="deleteInputDataRow(' + inputData[i].index + ');"' + \
            '      name="deleteAction" ' + \
            '     value="deleteInputDataRow' + inputData[i].index + '"' + \
            '      size="18,18" ' + \
            '    border="0" />' + \
            '</td>' +
            // ...                                                                                                                                                                                                                                               
            '</tr>';                                                                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                                                                                      
    return rows;                                                                                                                                                                                                                                                                           
}    

问题:我想捕获 上的 mouseover 事件deleteAction 命名的 input 元素。

我有以下 jQuery 脚本:

$(document).ready(function() {
    inputDataElementsRowDeleteActions = $("#inputDataElements input:[name=deleteAction]");
    ...
    inputDataElementsRowDeleteActions.mouseover(function(event) {
        alert(event);
    });
});

问题:当我将鼠标悬停在 input 元素上时,我没有收到 alert 消息。

当动态添加元素时,有没有办法用 jQuery 捕获 mouseover 事件?

I am dynamically adding input elements to a table with the id of inputDataElements.

These input elements have the name deleteAction:

function renderInputDataRows(inputData) {                                                                                                                                                                                                                                                  
    var rows = "";                                                                                                                                                                                                                                                                         
    for (var i = 0; i < inputData.length; i++) {                                                                                                                                                                                                                                           
        rows += '<tr>' +                                                                                                                                                                                                                                                               
            // ...  
            '<td class="rowActions">' + \
            '<input type="image" ' + \
            '      style="position:relative; ' + \
            '               bottom:-2px; ' + \
            '                 left:-4px; ' + \
            '        padding-right:2px;" ' + \
            '       src="images/delete.png" ' + \
            '   onClick="deleteInputDataRow(' + inputData[i].index + ');"' + \
            '      name="deleteAction" ' + \
            '     value="deleteInputDataRow' + inputData[i].index + '"' + \
            '      size="18,18" ' + \
            '    border="0" />' + \
            '</td>' +
            // ...                                                                                                                                                                                                                                               
            '</tr>';                                                                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                                                                                      
    return rows;                                                                                                                                                                                                                                                                           
}    

Question: I would like to capture mouseover events on the deleteAction-named input elements.

I have the following jQuery script:

$(document).ready(function() {
    inputDataElementsRowDeleteActions = $("#inputDataElements input:[name=deleteAction]");
    ...
    inputDataElementsRowDeleteActions.mouseover(function(event) {
        alert(event);
    });
});

Problem: I do not get the alert message when I mouseover the input element.

Is there a way to capture the mouseover event with jQuery, when the elements are added dynamically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你没皮卡萌 2024-09-19 23:22:16

最简单的方法是使用 .live()

inputDataElementsRowActions.live('mouseover', function(event) {
    alert(event);
});

或者您可以使用类似的 .delegate() (在这种情况下可能是首选)。

$("#inputDataElements").delegate('input[name=rowAction]', 'mouseover', function(event) {
    alert(event);
});

它们都通过捕获冒泡的事件来工作。在本例中,.live() 在根处捕获它,而 .delegate()#inputDataElements 处捕获它。

否则,您必须在创建元素时(或之后)绑定事件。

The simplest way is to use .live()

inputDataElementsRowActions.live('mouseover', function(event) {
    alert(event);
});

or you could use .delegate() which is similar (and probably preferred in this case).

$("#inputDataElements").delegate('input[name=rowAction]', 'mouseover', function(event) {
    alert(event);
});

They both work by capturing the event that bubbles up. .live() captures it at the root, while .delegate() captures it at the #inputDataElements in this case.

Otherwise, you would have to bind the event as (or after) you create the elements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文