我用一个简单的列表结构制作了一个表格:
<html>
<body>
<ul id="Column:0">
<li id="Row:0></li>
<li id="Row:1></li>
<li id="Row:2></li>
<li id="Row:3></li>
<li id="Row:4></li>
</ul>
<ul id="Column:1">
<li id="Row:0></li>
<li id="Row:1></li>
<li id="Row:2></li>
<li id="Row:3></li>
<li id="Row:4></li>
</ul>
<ul id="Column:2">
<li id="Row:0></li>
<li id="Row:1></li>
<li id="Row:2></li>
<li id="Row:3></li>
<li id="Row:4></li>
</ul>
</body>
</html>
现在我想为每一行添加一个简单的 .mouseover(),例如在悬停时更改一行的颜色。到目前为止,这就是我想出的:
for (var i = 2; i <= _totalRows; i++) {
var row = $('#TimeTable ul li:nth-child(' + i + ')')
row.each(function() {
$(this).click(function(evt) {
var $target = $(evt.target);
console.log($target.nodeName)
if (evt.target.nodeName == 'DIV') {
console.log(evt.parent('li'));
}
}); //end $(this).click(fn)
}); // end each(fn)
}
我得到一组<li>
与 :nth-child(i) 匹配的所有对象,其中i
是行号。
var row = $('#TimeTable ul li:nth-child(' + i + ')')
现在我只是迭代这个集合,为每个 .click(fn) 添加一个 .click(fn) <li>
。这工作正常。每个单元格都有它的 .click(fn) 附加到它。但是,单击一下要做什么,是我现在被困了几个小时的地方:
var $target = $(evt.target);
console.log($target.nodeName)
if (evt.target.nodeName == 'DIV') {
console.log(evt.parent('li'));
}
我根本不让它运行。你实际上可以忽略这个胡言乱语,因为它只是我已经在这里尝试过的几件事中的最后一个。
我想要做的只是选择每个<li>
id='Row:X' 并操纵它的 CSS。我所拥有的最好的是,我可以单击一个单元格,但无论该单元格在哪一行,最后一个都会被着色。我记得i
在发生这种情况时曾用作行索引,所以我可能也会在这里错过对事件处理的一些理解。