単純なリスト構造からテーブルを作成しました。
<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)を追加します<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
そのときに行インデックスとして使用したことを覚えているので、ここでもイベント処理についての理解が不足している可能性があります。