gpt4 book ai didi

jquery - 完整的动态 HTML 表格悬停事件不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 15:50:46 25 4
gpt4 key购买 nike

我试图在 HTML 文档中创建一个没有任何先前信息的表格。

在下面的这个例子中,我想创建一个表,然后是一个标题和行。假设真实程序中的表布局为 <tr><th> 的集合和 <tr><td> (标题行,然后是单元格行)。

然后我希望能够将鼠标悬停在任何单元格行上,并让它为该单元格行和前一个标题行着色。

问题是如果表是完全动态分配的,以前使用的方法似乎不起作用。

var statTable = $('<table>', {"id": "statTable", "class": "statTable"});

$("#tableCreate").click(function() {
$("#newDiv").append(statTable);
$("#statTable").append("<tbody>");
$(this).prop('disabled', true);
});

$("#setCreate").click(function() {
$("tbody").append($("<tr>")).append($("<th>").text("HEADER"));
$("tbody").append($("<tr>")).append($('<td>').text("TESTING..."));
});

$("#statTable tr").hover(function() {
$(this).prev().find('th').removeClass('green');
$(this).prev().find('th').addClass('red');
}, function() {
$(this).prev().find('th').removeClass('red');
$(this).prev().find('th').addClass('green');
});
td {
border: 1px solid black;
}

th {
background-color: green;
border: 1px solid black;
}

.red {
background-color: red !important;
}

.green {
background-color: green !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<button id="tableCreate">make table </button>
<button id="setCreate">add set</button>

<div id="newDiv">
</div>
</html>

最佳答案

这是因为当您将事件绑定(bind)到元素时,它必须存在。

虽然有一个技巧可以做到这一点。您可以绑定(bind)到文档并仅在特定元素上触发它,而不是将事件绑定(bind)到元素。

此外,在将 thtd 附加到 tr 时,您还犯了一个小错误。我修复了它,现在它可以正常工作了。

这是一个工作示例

var statTable = $('<table>', {"id": "statTable", "class": "statTable"});

$("#tableCreate").click(function() {
$("#newDiv").append(statTable);
$("#statTable").append("<tbody>");
$(this).prop('disabled', true);
});

$("#setCreate").click(function() {
$("tbody").append($("<tr>").append($("<th>").text("HEADER")));
$("tbody").append($("<tr>").append($('<td>').text("TESTING...")));
});

$(document).on({
mouseenter: function() {
$(this).prev().find('th').removeClass('green');
$(this).prev().find('th').addClass('red');
},
mouseleave: function() {
$(this).prev().find('th').removeClass('red');
$(this).prev().find('th').addClass('green');
}
}, "#statTable tr");
td {
border: 1px solid black;
}

th {
background-color: green;
border: 1px solid black;
}

.red {
background-color: red !important;
}

.green {
background-color: green !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<button id="tableCreate">make table </button>
<button id="setCreate">add set</button>

<div id="newDiv">
</div>

</html>

关于jquery - 完整的动态 HTML 表格悬停事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50522401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com