I have simple ol-li construction and want to add drag\'n\'drop to it. Additionaly I want to highlight hover item and dragover item in different colors. But it is an unusual bug
Here is how I solved it. I had to resort to a little bit of JS unfortunately.
My page has collapsed records that highlight on hover. Clicking the record will expand it and disable the highlighting. Clicking again will re-collapse and resume hovering:
$(document).on('click', ".container.clickable", function(e){
var $this = $(this);
$this.toggleClass('expandable');
if ($this.hasClass('expandable')) {
$this.on('mouseenter', function(){
// workaround to stop a stuck :hover
$this.addClass('hilitable');
$this.off('mouseenter');
})
} else {
$this.removeClass('hilitable');
}
});
You can simply add an .onmouseover
and an .onmouseout
function and add/remove a class called hovered
instead of using CSS's :hover
. Here is the updated jsFiddle
Javascript to add (inside for loop)
lis[i].onmouseover = function() {
// Adds the 'hovered' class
this.className = this.className + " hovered";
}
lis[i].onmouseout = function() {
// Removes the 'hovered' class
this.className = this.className.split(' ').filter(function(v) {
return v!='hovered'
}).join(' ');
}
CSS
.hovered {
background: #fc9;
}
Side note: I might add an id to the ol
like id='dragableList'
and change the line var lis = document.querySelectorAll("li")
to var lis = document.getElementById('dragableList').querySelectorAll("li")
just in case you have another list somewhere in your project later on. Here is the jsFiddle with that included