如何使用活动元素进行鼠标输入
How to mouseenter with live elements?
我在使用带有live元素的mouseenter时遇到问题。当我将鼠标悬停在添加了javascript的选定元素上时,这些函数不会被触发。
我添加了以下元素:
this.fixElements = function () {
$('.iconstarsdynamic.isgradeable:not(.touched)').each(function(){
var $self = $(this),
$gradeLength = Math.round(parseInt($self.width())/$maxGrade*100)/100;
$self.addClass('touched');
for ($i = 1; $i <= $maxGrade; ++$i) {
$('<span />', {
"class" : "grader",
"z-index" : $i,
"width" : ($gradeLength*$i)+'px'
}).attr('grade', $i).appendTo($self);
}
});
}
我试着用这个mouseenter
:
this.hover = function() {
$('.iconstarsdynamic.isgradeable')
.on('mouseenter', '.grader', function(){
$(this).css('visibility', 'visible');
console.log('over');
})
.on('mouseleave', '.grader', function(){
$(this).css('visibility', 'hidden');
});
}
我的输出如下:
<span class="iconstarsdynamic isgradeable touched" title="Rated 0 out of 4">
<span class="stars" style="width:0%;"></span>
<span class="grader" z-index="1" style="width: 9.25px; " grade="1"></span>
<span class="grader" z-index="2" style="width: 18.5px; " grade="2"></span>
<span class="grader" z-index="3" style="width: 27.75px; " grade="3"></span>
<span class="grader" z-index="4" style="width: 37px; " grade="4"></span>
</span>
问题是mouseenter
从不运行。为什么会这样?如果我将mouseenter
附加到.iconstarsdynamic.isgradeable
,它会起作用,但这不是我想要的。我想把它附在.iconstarsdynamic.isgradeable .grader
上。
mouseenter
和mouseleave
事件不会冒泡,因此无法使用您使用的事件委派方法。您应该使用mouseover
和mouseout
(如果有的话,您可能需要处理后代的事件)。
相关文章:
- 鼠标输入在 YUI 的 chrome 中不起作用
- 使用鼠标输入图表时禁用自动点悬停
- 鼠标输入和鼠标离开不起作用
- 鼠标输入鼠标离开没有按照我认为应该的方式工作
- 鼠标输入悬停分区显示/隐藏
- 清除间隔在鼠标输入上不起作用
- 鼠标输入事件上的jQuery延迟出现问题
- jQuery-鼠标输入闪烁图像
- 鼠标输入事件未触发
- 临时取消绑定鼠标输入从元素
- 悬停(),鼠标输入(),鼠标悬停()等来回跳跃
- 如何在鼠标输入时对字体大小进行动画处理
- 在单击时对元素进行动画处理,并在该元素和其他元素上单击鼠标输入/鼠标离开
- JS:鼠标输入的触摸等效项
- 防止“鼠标输入”回调函数,直到“突出显示”效果完成
- FF 鼠标离开/鼠标输入事件
- jQuery在鼠标输入时更改css,但仅输入内容而不是全部
- 如何使鼠标输入功能具有淡入淡出效果并保持在那里
- jQuery:单击时,防止鼠标输入事件
- 鼠标输入/鼠标离开产生闪烁效果