我有一个嵌套列表,其中包含类别和子类别,深度未知,它是使用来自数据库的数据创建的。
我想做的是在悬停在类别旁边显示一个小图片,即叉号。
问题是我不能可靠地区分正在悬停的是祖先li元素还是子元素,因为当我从子类别返回到父类别时,“mousein”事件不会再次触发。
我的当前代码是: Html示例
我想做的是在悬停在类别旁边显示一个小图片,即叉号。
问题是我不能可靠地区分正在悬停的是祖先li元素还是子元素,因为当我从子类别返回到父类别时,“mousein”事件不会再次触发。
我的当前代码是: Html示例
<ol class="innerCenter" id="bdc_categories">
<form action="?function=base_connaissances&onglet=2" method="POST" id="" name="">
<li>Hardware<img class="hidden" src="image/supp.png">
<ol>
<li>Ecran<img class="hidden" src="image/supp.png">
<ol>
<li>Alimentation<img class="hidden" src="image/supp.png"></li>
<li>Dalle<img class="hidden" src="image/supp.png"></li>
</ol>
</li>
<li>Disque dur<img class="hidden" src="image/supp.png"></li>
</ol>
</li>
<li>Test<img class="hidden" src="image/supp.png"></li>
<li>Test<img class="hidden" src="image/supp.png"></li>
<li>Test<img class="hidden" src="image/supp.png"></li>
<li>Ajouter une catégorie...<img class="hidden" src="image/supp.png"></li>
<li>Software<img class="hidden" src="image/supp.png">
<ol>
<li>Excel<img class="hidden" src="image/supp.png"></li>
</ol>
</li>
</form>
<form action="?function=base_connaissances&onglet=2" method="POST" id="" name="">
<input type="hidden" value="NULL" name="idCategSup">
<input type="text" value="Ajouter une catégorie..." name="lib_categ">
<input type="submit" value="Ok">
</form>
</ol>
Javascript
$("#bdc_categories").on('mouseleave', '', '', function(){$("#bdc_categories li").removeClass('is-hover'); $("#bdc_categories li").children('img').css({"visibility": "hidden"});});
$("#bdc_categories li").hover(function (event) {
event.stopPropagation();
if($(event.target).is('li')){
$("#bdc_categories li").removeClass('is-hover');
$("#bdc_categories li").children('img').css({"visibility": "hidden"});
$(event.target).addClass('is-hover');
$(event.target).children('img').css({"visibility": "visible"});
var tar = $(event.target);
while ($(tar.parent('ol').parent('li')).length) {
tar = $(tar.parent('ol').parent('li'));
$(tar).addClass('is-hover');
//$(tar).children('img').css({"visibility": "hidden"});
}
}
}, function (event) {
event.stopPropagation();
$(event.target).removeClass('is-hover');
$("#bdc_categories li").not(".is-hover").children('img').css({"visibility": "hidden"});
$("#bdc_categories .is-hover").children('img').css({"visibility": "visible"});
$("#bdc_categories .is-hover").parent('ol').parent('li').children('img').css({"visibility": "hidden"});
}
它几乎可以工作,但我相信有更好的方法来实现这个?还有一个小问题:如果我从“测试”li到硬件li,图像不会出现...我认为这是因为鼠标事件在ol元素上触发,即使我不在li上...
任何帮助将不胜感激!
li
到硬件上的一个,并且图片显示出来 :) - user4454229<ol>
时,它应该仍然触发一个新事件。抱歉@Nehluxhes,我会删除我的回答 :) - user4454229