如何使用 jQuery 捕获动态添加的输入 HTML 元素上的鼠标悬停事件?
我正在使用 inputDataElements
的 id
动态地将 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
事件deleteActioninput
元素。
我有以下 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的方法是使用
.live()
或者您可以使用类似的
.delegate()
(在这种情况下可能是首选)。它们都通过捕获冒泡的事件来工作。在本例中,
.live()
在根处捕获它,而.delegate()
在#inputDataElements
处捕获它。否则,您必须在创建元素时(或之后)绑定事件。
The simplest way is to use
.live()
or you could use
.delegate()
which is similar (and probably preferred in this case).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.