Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery悬停函数_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript jQuery悬停函数

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++) {

我正在尝试在两个不同的表中同步悬停。。。但是由于某种原因,当函数只有第一部分工作时,添加第二部分会破坏第一部分,并且不会给我任何错误

我没有把它放到JSFIDLE中,因为它不是一个可视化的东西。。。它的纯代码在某处被破坏

$(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也更新了,非常感谢!非常快速、有建设性、明智的编码和教学。