Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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“mouseenter mouseleave”函数不起作用_Jquery_Svg - Fatal编程技术网

jQuery“mouseenter mouseleave”函数不起作用

jQuery“mouseenter mouseleave”函数不起作用,jquery,svg,Jquery,Svg,我已经制作了一个带有过滤器的svg映射。当过滤器悬停列出元素时,我想突出显示svg路径或矩形。我使用jQuery'mousenter,mouseleave'函数,但在'mouseleave'上添加的类尚未删除,svg路径保持亮起 jQuerydocument.readyfunction{ jQuery'.descriptions li'.on'mouseenter mouseleave',function e{ var curClass=jQuerythis.attrclass; 如果e.ty

我已经制作了一个带有过滤器的svg映射。当过滤器悬停列出元素时,我想突出显示svg路径或矩形。我使用jQuery'mousenter,mouseleave'函数,但在'mouseleave'上添加的类尚未删除,svg路径保持亮起

jQuerydocument.readyfunction{ jQuery'.descriptions li'.on'mouseenter mouseleave',function e{ var curClass=jQuerythis.attrclass; 如果e.type==mouseenter{ jQuery.+curClass.addClasshighlighted; }否则{ jQuery.+curClass.removeclass突出显示; } }; }; 路径 直肠{ 填充:BFBF; } .突出显示{ 填料:F5902B; }
这是因为您正在按类查找元素,并且高亮显示时它有多个类

当您使用鼠标输入时,curClass是例如选项_5。这是一种不错的选择元素的方式,但不是很好curClass选择器,当它转换为.option_5时。但当离开时,类的选项_5高亮显示,因此selector.option_5高亮显示无效。应突出显示选项5,因为它代表两个不同的类

如何解决这个问题?好最简单和干净的方法是将id添加到图表元素中,并通过id with id selector而不是通过类来选择它们。但我想这会破坏多重高亮的想法,所以

另一种解决方案是从类选择器中删除高亮显示的内容,就像这样,这不是一种很好的方法:

jQuery('.descriptions li').on('mouseenter mouseleave', function(e) {
    var curClass = jQuery(this).attr("class").replace(/\shighlighted/g,''); // <- here
    if (e.type == "mouseenter") {
      jQuery("." + curClass).addClass("highlighted");
    } else {
      jQuery("." + curClass).removeClass("highlighted");
    }
  });

这是因为您正在按类查找元素,并且高亮显示时它有多个类

当您使用鼠标输入时,curClass是例如选项_5。这是一种不错的选择元素的方式,但不是很好curClass选择器,当它转换为.option_5时。但当离开时,类的选项_5高亮显示,因此selector.option_5高亮显示无效。应突出显示选项5,因为它代表两个不同的类

如何解决这个问题?好最简单和干净的方法是将id添加到图表元素中,并通过id with id selector而不是通过类来选择它们。但我想这会破坏多重高亮的想法,所以

另一种解决方案是从类选择器中删除高亮显示的内容,就像这样,这不是一种很好的方法:

jQuery('.descriptions li').on('mouseenter mouseleave', function(e) {
    var curClass = jQuery(this).attr("class").replace(/\shighlighted/g,''); // <- here
    if (e.type == "mouseenter") {
      jQuery("." + curClass).addClass("highlighted");
    } else {
      jQuery("." + curClass).removeClass("highlighted");
    }
  });
在代码中有onmouseout=hideTooltip;。在javascript中,没有hideTooltip函数。您需要删除onmouseout=hideTooltip

而不是添加和删除一个类,您可以使用toggleClass

对于li元素,不要使用要切换的同一类。相反,您可以使用具有相同值的数据类属性

jQuerydocument.ready函数{ jQuery'.descriptions li'.on'mouseenter mouseleave',函数e{ var curClass=jQuerythis.attrdata-class; jQuery.+curClass.toggleClasshighlighted; }; }; 路径,矩形{ 填充:BFBF; } .突出显示{ 填料:F5902B; } 在代码中有onmouseout=hideTooltip;。在javascript中,没有hideTooltip函数。您需要删除onmouseout=hideTooltip

而不是添加和删除一个类,您可以使用toggleClass

对于li元素,不要使用要切换的同一类。相反,您可以使用具有相同值的数据类属性

jQuerydocument.ready函数{ jQuery'.descriptions li'.on'mouseenter mouseleave',函数e{ var curClass=jQuerythis.attrdata-class; jQuery.+curClass.toggleClasshighlighted; }; }; 路径,矩形{ 填充:BFBF; } .突出显示{ 填料:F5902B; } 变量:对元素使用class属性,但仅在map:jQuery.map-wrapper中选择currClasscurClass.toggleClasshighlightedVariant:对元素使用class属性,但仅在映射中选择currClass:jQuery.map-wrapper.+curClass.toggleClasshighlighted