Javascript jQuery悬停函数
我正在尝试在两个不同的表中同步悬停。。。但是由于某种原因,当函数只有第一部分工作时,添加第二部分会破坏第一部分,并且不会给我任何错误 我没有把它放到JSFIDLE中,因为它不是一个可视化的东西。。。它的纯代码在某处被破坏Javascript jQuery悬停函数,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试在两个不同的表中同步悬停。。。但是由于某种原因,当函数只有第一部分工作时,添加第二部分会破坏第一部分,并且不会给我任何错误 我没有把它放到JSFIDLE中,因为它不是一个可视化的东西。。。它的纯代码在某处被破坏 $(function(){ //first part var trsCont = $('#conteudo table tr'); for (i = 0; i < trsCont.length; i++) {
$(function(){
//first part
var trsCont = $('#conteudo table tr');
for (i = 0; i < trsCont.length; i++) {
trsCont.eq(i).hover(
function () {
$('#coluna_fixa table tr').eq(i-1).toggleClass("hovered");
}
);
}
//second part
var trsCol = $('#coluna_fixa table tr');
for (i = 0; i < trsCol.length; i++) {
trsCol.eq(i).hover(
function () {
$('#conteudo table tr').eq(i+1).toggleClass("hovered");
}
);
}
});
$(函数(){
//第一部分
var trsCont=$(“#conteudo table tr”);
对于(i=0;i
我知道我做错了什么。。。有人能指出吗
感谢您阅读本文。您真的不应该在循环中定义事件处理程序。相反,您应该使悬停函数更通用,如下所示:
//first part
$('#table1 tr').hover(
function () {
var index = $(this).index();
$("#table2 tr:eq(" + (index - 1) + ")").toggleClass("hovered");
}
);
//second part
$('#table2 tr').hover(
function () {
var index = $(this).index();
$("#table1 tr:eq(" + (index + 1) + ")").toggleClass("hovered");
}
);
查看这个JSFIDLE以获得一个示例:您真的不应该在循环中定义事件处理程序。相反,您应该使悬停函数更通用,如下所示:
//first part
$('#table1 tr').hover(
function () {
var index = $(this).index();
$("#table2 tr:eq(" + (index - 1) + ")").toggleClass("hovered");
}
);
//second part
$('#table2 tr').hover(
function () {
var index = $(this).index();
$("#table1 tr:eq(" + (index + 1) + ")").toggleClass("hovered");
}
);
以这个JSFIDLE为例:如果去掉第一部分,那么第二部分有效吗?您真的不应该在循环中定义事件处理程序。。。特别是涉及全局迭代器变量的循环:-)如果去掉第一部分,第二部分可以工作吗?你真的不应该在循环中定义事件处理程序。。。特别是涉及全局迭代器变量的循环:-)问题在于所需的逻辑。当表1 Tx(X)悬停时,我需要在表2 Tr(X-1)上触发悬停事件。@MBarni啊,我从原始代码中没有注意到这一点。让我修改为JS fiddle,反之亦然。@MBarni更新。现在应该可以为你工作了。JSFIDLE也更新了,非常感谢!非常快速、有建设性、明智的编码和教学。问题在于所需的逻辑。当表1 Tx(X)悬停时,我需要在表2 Tr(X-1)上触发悬停事件。@MBarni啊,我从原始代码中没有注意到这一点。让我修改为JS fiddle,反之亦然。@MBarni更新。现在应该可以为你工作了。JSFIDLE也更新了,非常感谢!非常快速、有建设性、明智的编码和教学。