jQuery悬停事件不符合UL标准?
问题描述:
我已经浏览了类似标题的大量问题,并且不能在我的生活中弄清楚发生了什么。我有一个使用KnockoutJS + jQuery的系统,它将填充一个列表并将一个类添加到一个悬停列表中,该列表将在另一个函数的地图上突出显示它。jQuery悬停事件不符合UL标准?
这里是我的HTML:
<ul data-bind="foreach: markers" class="locationListMain">
<ul class="locationList">
<h3 class="resultTITLE">
<span data-bind="text: title"></span>
</h3>
<p class="resultLATLONG">
LAT
<span data-bind="text: lat"></span>
, LONG
<span data-bind="text: lng"></span>
</p>
</ul>
</ul>
够简单。现在我想通过jQuery调用悬停事件上.locationList
像这样:
$('.locationList').hover(function(){
console.log('hovering');
$(this).addClass('active');
}, function() {
console.log('not hovering!');
$(this).addClass('active');
});
但我不能得到任何火灾。奇怪的是,如果我删除.locationList
元素,并将该类添加到*别<ul>
,它可以毫无问题地工作。我想知道这是否是一个CSS问题,但我也不能指出这一点。已经没有喜悦地将它移到顶部z索引。思考?将不胜感激任何帮助或见解。谢谢!
答
感谢特里的评论,想通了。悬停事件侦听器在dom中可用之前尝试绑定到该元素。移动悬停功能在
$(document).ready(function(){})
做了诡计。
这可能意味着您在运行时在DOM中可用之前将悬停事件侦听器绑定到'.locationList'。当你的JS被执行并且该元素尚不可用时,那么你将悬停事件绑定到由选择器返回的空集。你应该在元素被渲染时执行这个绑定,或者在父节点上使用事件冒泡(即'$ someParent.on('mouseenter','.locationList',function(){...})')这是在运行时出现的。 – Terry
在$(document).ready下移动这个函数就完成了。万分感谢! – IkeDoud