onmouseover事件不是为表单元格发射
我对onmouseevent表单元格有问题。 我在做什么是删除和jQuery的帮助下创建HTML表格单元格。当页面加载这个事件触发完全罚款。但是在删除并重新插入表格单元格之后,不会触发onmouseover事件。下面是我做了什么代码...onmouseover事件不是为表单元格发射
var ModularAdHolderCell = '';
var MergedCellValues = new Array();
$('#our_table tr').each(function (i, el) {
for (var cellCnt = 0; cellCnt < this.cells.length; cellCnt++) {
if ($(this.cells[cellCnt]).attr('class') == 'highlighted' || $(this.cells[cellCnt]).attr('class') == 'OrangeBackground highlighted') {
var id = $(this.cells[cellCnt]).attr('id');
ModularAdHolderCell = id;
id = 'hdn_' + id;
var MergedCells = $(this.cells[cellCnt]).find('input:hidden').val();
if (MergedCells != '')
MergedCellValues = MergedCells.trim().split('=');
}
}
});
var row = document.all.our_table.rows[0];
var TotalCellInRow = row.cells.length;
var Cell = row.insertCell(TotalCellInRow);
var element1 = document.createElement("input");
element1.type = "hidden";
element1.id = "hdn_" + MergedCellValues[cnt];
row.cells(TotalCellInRow).setAttribute('onmouseover', 'MOuseOver(this)');
row.cells(TotalCellInRow).setAttribute('onmouseout', 'MouseOut()');
row.cells(TotalCellInRow).setAttribute('onmousemove', 'MOuseOver(this)');
row.cells(TotalCellInRow).setAttribute('onmouseenter', 'MOuseOver(this)');
row.cells(TotalCellInRow).setAttribute('unitheight', Unitwidth);
row.cells(TotalCellInRow).setAttribute('unitwidth', UnitHeight);
row.cells(TotalCellInRow).setAttribute('id', MergedCellValues[cnt]);
row.cells(TotalCellInRow).setAttribute('width', Unitwidth);
row.cells(TotalCellInRow).setAttribute('height', UnitHeight);
row.cells(TotalCellInRow).appendChild(element1);
$(row).find('#' + MergedCellValues[cnt] + '').attr('onmouseover', 'MOuseOver(this)');
$(row).find('#' + MergedCellValues[cnt] + '').attr('onmouseout', 'MouseOut()');
$(row).find('#' + MergedCellValues[cnt] + '').attr('onmousemove', 'MOuseOver(this)');
$(row).find('#' + MergedCellValues[cnt] + '').attr('onmouseenter', 'MOuseOver(this)');
这里MergedCellValues是小区ID的阵列和上面的代码是在电池的循环。
任何人都可以告诉为什么它不会触发onmouseover事件的细胞?
设置一个属性并不是附加事件处理程序的预期方式,您可以在这里简化并加速处理大量问题,删除所有逻辑.setAttribute('onmouseover', 'MOuseOver(this)');
...全部8行,然后仅附加一个一套处理程序的<table>
来处理这一切:
$("#our_table")
.delegate("td", "mouseover mousemove mouseenter", MOuseOver)
.delegate("td", "mouseout", MouseOut);
在
MOuseOver
和
MouseOut
功能
然后,只需使用this
引用的单元格。
这种重视处理的<table>
元素监听其他鼠标事件冒泡......没有必要每个细胞结合他们来说,这是远远更便宜,适用于现有的和新的细胞结合。
非常感谢尼克...让我试试这个.... – Ronak 2010-11-20 11:11:10
@Ronak - 我更新了它,因为你在jQuery 1.4.2上,1.4.3+语法不起作用,你...上面的代码应该可以工作,并且确保在你的函数中使用'this',而不是你现在传入的参数。 – 2010-11-20 11:12:19
@Ronak;对于这样的问题,指定你正在测试的浏览器几乎总是至关重要的;它可能会提供有关正在发生的事情的线索。 – BeemerGuy 2010-11-20 10:53:56
你的'MOuseOver'函数是什么样的? – 2010-11-20 10:54:21
@BeemerGuy:我正在使用IE8。奇怪的是,它的Safari浏览器工作正常。 – Ronak 2010-11-20 11:02:18