Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
jquery:基于一个类从一个有多个类的元素中设置变量_Jquery_Class_Variables - Fatal编程技术网

jquery:基于一个类从一个有多个类的元素中设置变量

jquery:基于一个类从一个有多个类的元素中设置变量,jquery,class,variables,Jquery,Class,Variables,我正试图创建一个表,其中的列和行在hover上突出显示。我意识到有jquery插件可以做到这一点,但我正在努力学习,所以我想我自己也可以尝试一下 以下是到目前为止我得到的信息: $('th:not(.features), td:not(.features)').hover(highlight); function highlight(){ $('th.highlightCol, td.highlightCol').removeClass('highlightCol');

我正试图创建一个表,其中的列和行在hover上突出显示。我意识到有jquery插件可以做到这一点,但我正在努力学习,所以我想我自己也可以尝试一下

以下是到目前为止我得到的信息:

$('th:not(.features), td:not(.features)').hover(highlight);

 function highlight(){
     $('th.highlightCol, td.highlightCol').removeClass('highlightCol');
     var col = $(this).attr('class');
     $('.' + col).addClass('highlightCol');
 };

 $('tr').hover(highlightRowOn, highlightRowOff);

 function highlightRowOn(){
     $(this).children('td:not(.highlightCol)').addClass('highlightRow');
 };

 function highlightRowOff(){
     $(this).children('td:not(.highlightCol)').removeClass('highlightRow');
 };
除了一个问题外,这工作正常: 每个“td”都有一个特定于其列package1、package2、package3、package4的类。正是这个函数传递给变量col,以便在其“td”之一悬停时将类“highlightCol”添加到列中

但是,如果将光标沿高亮显示的行移动到新列,则所降落的“td”有两个类highlightedRow和package*。这两个变量都会传递给变量,因此新列不会收到要突出显示的正确类

我是否有办法只针对“package*”类并将其传递给变量,而忽略“highlightedRow”类

我希望这不会太混乱,让人无法理解,非常感谢您提供的任何帮助

有没有一种方法可以让我瞄准 “package*”类并将其传递给 在忽略 “highlightedRow”课程

是的,使用好的老式DOM。既然你在学习,我就不明确给出解决方案

最简单的方法是从jQuery获取HTMLElement:$'.selector'.get0返回第一个匹配的元素。然后使用元素的className属性来获取所需的内容


还有,可能有一些用处。

谢谢你的帮助。。。我终于明白了。下面是那些感兴趣的人的代码

$('th:not(.features), td:not(.features)').hover(highlight, remove);

function highlight(){
    $(this).removeClass('highlightRow');
    var col = $(this).attr('class');
    $('.' + col).addClass('highlightCol');
};

function remove (){
    $('th.highlightCol, td.highlightCol').removeClass('highlightCol');
    $(this).addClass('highlightRow');
};

$('tr').hover(highlightRowOn, highlightRowOff);

function highlightRowOn(){
    $(this).children('td:not(.highlightCol), th:not(.highlightCol)').addClass('highlightRow');
};

function highlightRowOff(){
    $(this).children('td:not(.highlightCol), th:not(.highlightCol)').removeClass('highlightRow');
};