在下面的示例中,当我将鼠标悬停在“X”按钮上时,列表项
是否可能使按钮上的
还有其他方法可以实现吗?也许可以以不同的方式组装所有这些HTML / CSS / JS? 工作样例在此处
hover
样式也会启用,我不希望这种情况发生。是否可能使按钮上的
hover
样式独立于list-group-item
上的hover
样式?类似于防止“hover”传播的方式?还有其他方法可以实现吗?也许可以以不同的方式组装所有这些HTML / CSS / JS? 工作样例在此处
<ul class="list-group">
<li class="list-group-item">
Lalalalaiaia
<button class="btn btn-default btn-xs pull-right remove-item">
<span class="glyphicon glyphicon-remove"></span>
</button>
</li>
<li class="list-group-item">
Panananannaeue
<button class="btn btn-default btn-xs pull-right remove-item">
<span class="glyphicon glyphicon-remove"></span>
</button>
</li>
</ul>
CSS
.list-group-item:hover {
background: #fafafa;
cursor: pointer;
}
JavaScript
$('.list-group-item').on('click', function(){
console.log('clicked item');
});
$('.remove-item').on('click', function(e){
console.log('clicked remove-item btn');
e.stopPropagation();
});
更新
问题似乎在于当鼠标悬停在内部的X按钮上时,鼠标实际上并没有离开'list-group-item'元素,因此它保持了悬停状态。
我通过在'remove-item'按钮的'mouseleave'和'mouseenter'事件中分别手动调度'list-group-item'上的'mouseenter'和'mouseleave'来解决了这个问题,而不需要使用'event.stopPropagation()'(除了按钮单击处理程序)。
缺点是我需要为两个元素都设置'mouseenter'和'mouseleave'事件处理程序。最好只使用CSS,但似乎这是不可能的。
我只是不确定这是否是一个干净的解决方案,你觉得呢?
CSS
.list-group-item.mouseover {
background: #fafafa;
cursor: pointer;
}
.list-group-item .remove-item.mouseover {
background: #aaf;
cursor: pointer;
}
JavaScript
// LIST-ITEM EVENT HANDLERS
$('.list-group-item').on('mouseenter', function(e){
$(this).addClass('mouseover');
}).on('mouseleave', function(e){
$(this).removeClass('mouseover');
});
$('.list-group-item').on('click', function(){
console.log('clicked item');
});
// LIST-ITEM REMOVE BUTTON EVENT HANDLERS
$('.remove-item').on('mouseenter', function(e){
$(this).addClass('mouseover');
$(this).parent().mouseleave();
}).on('mouseleave', function(e){
$(this).removeClass('mouseover');
$(this).parent().mouseenter();
});
$('.remove-item').on('click', function(e){
console.log('clicked remove-item btn');
e.stopPropagation();
});
.list-group-item:hover button
设计一个样式,以取消群组项本身的悬停样式。 - Pointy.list-group-item:hover button
会改变按钮的CSS样式,而不是列表项的样式,这与OP想要更改的内容不符。他希望当您悬停在按钮上时,列表项悬停不会被触发(或看起来不像被触发)。 - j08691