52 lines
1.0 KiB
JavaScript
52 lines
1.0 KiB
JavaScript
modulejs.define('ext/link-hover-states', ['_', '$', 'core/settings', 'core/event'], function (_, $, allsettings, event) {
|
|
|
|
var settings = _.extend({
|
|
enabled: false
|
|
}, allsettings['link-hover-states']);
|
|
var selector = "a[href^='/']";
|
|
|
|
|
|
function selectLinks(href) {
|
|
|
|
return $(_.filter($(selector), function (el) {
|
|
|
|
return $(el).attr('href') === href;
|
|
}));
|
|
}
|
|
|
|
function onMouseEnter() {
|
|
|
|
var href = $(this).attr('href');
|
|
|
|
selectLinks(href).addClass('hover');
|
|
}
|
|
|
|
function onMouseLeave() {
|
|
|
|
var href = $(this).attr('href');
|
|
|
|
selectLinks(href).removeClass('hover');
|
|
}
|
|
|
|
function onLocationChanged() {
|
|
|
|
$('.hover').removeClass('hover');
|
|
}
|
|
|
|
function init() {
|
|
|
|
if (!settings.enabled) {
|
|
return;
|
|
}
|
|
|
|
$('body')
|
|
.on('mouseenter', selector, onMouseEnter)
|
|
.on('mouseleave', selector, onMouseLeave);
|
|
|
|
event.sub('location.changed', onLocationChanged);
|
|
}
|
|
|
|
|
|
init();
|
|
});
|