我正在使用input
table
向id
动态添加inputDataElements
个元素。
这些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);
});
});
问题:当鼠标悬停在alert
元素上时,我没有收到input
消息。
当动态添加元素时,有没有办法用jQuery捕获mouseover
事件?
答案 0 :(得分:4)
最简单的方法是使用.live()
inputDataElementsRowActions.live('mouseover', function(event) {
alert(event);
});
或者你可以使用类似的.delegate()
(在这种情况下可能更喜欢)。
$("#inputDataElements").delegate('input[name=rowAction]', 'mouseover', function(event) {
alert(event);
});
他们都通过捕捉起泡的事件来工作。 .live()
在根位置捕获,而.delegate()
在此情况下在#inputDataElements
处捕获它。
否则,您必须在创建元素时(或之后)绑定事件。