これは、静的ページの Javascript のみのソリューションです。これにより、イベント リスナーが にアタッチされ、tr
その子のクリック イベントがインターセプトされます。の内容はtr
動的にすることができます。
Array.prototype.forEach.call(document.getElementsByTagName("table"), function (table) {
Array.prototype.forEach.call(table.getElementsByTagName("tr"), function (tr) {
tr.addEventListener("click", function (evt) {
var children = this.children,
length = children.length;
if (length && children[length - 1] === evt.target) {
alert(children[0].firstChild.nodeValue);
}
}, false);
});
});
jsfiddleについて
jqueryの用語ではどれが
$("table tr").on("click", function (evt) {
var target = $(evt.target);
if (target.parent().children().last().get(0) === evt.target) {
alert(target.parent().children().first().text());
}
});
jsfiddleについて
または、要素ごとにイベントリスナーを設定するtr
(「バブリング」) のではなく、イベント「バブリング」を使用して、それを完全に移動することもできますdocument
(jquery で Event Delegation と呼ばれるjquery.on )。テーブルから行を追加および削除する場合、またはテーブル全体でさえ、動的システム。
document.addEventListener("click", function (evt) {
var target = evt.target;
if (target.nodeName === "TD" && target.parentNode.children[target.parentNode.children.length - 1] === target) {
alert(target.parentNode.children[0].firstChild.nodeValue);
}
}, false);
jsfid d leについて
またはjquery委任を使用する
$(document).on("click", "td", function (evt) {
var target = $(evt.target);
if (target.parent().children().last().get(0) === evt.target) {
alert(target.siblings().first().text());
}
});
jsfiddleについて