我有以下html结构:
<span>
<label>
<input this is my button's area />
<span> this is the svg icon</span>
</label>
</span>
我有一个影响我的输入的jQuery悬停事件,并且跨度绝对位于输入区域内,因此它在视觉上方位于其上方。
悬停事件会更改输入类,以便我可以更改按钮颜色,但是当鼠标移动到包含图标的跨度上时,输入中的悬停类会关闭,可预测,并且按钮似乎不是活性
有没有一种方法可以使悬停事件持续存在,尽管我在没有重新排列DOM的情况下将兄弟跨度悬停?
答案 0 :(得分:0)
如果元素是动态创建的,那么您拥有的唯一选项就是事件委派。
hover
无法委派。但您可以附加可以委派的mouseenter
和mouseleave
试试这个
$('#btn-create').on('click', function () {
$('#container').append($('#spanTemplate').clone().attr('id', ''));
});
$('#container').on('mouseenter', 'label', function (e) {
$('input', e.currentTarget).addClass('a');
}).on('mouseout', 'label', function (e) {
$('input', e.currentTarget).removeClass('a');
});
<强> Check Fiddle 强>
答案 1 :(得分:0)
UPDATE :仍然存在一些问题:在IE中,悬停只在鼠标位于按钮边框(!!)上方时才有效。当您将鼠标悬停在绝对定位的div或输入上时,悬停事件将被取消。有什么想法吗?我找不到合乎逻辑的解释。
(记得在IE中打开此链接以复制问题,并在chrome / ff中查看预期的行为。)
$('.xtraBlock ').mouseover(function(){
$('.popup').hover();
});