La plus rapide et la plus simple est d'utiliser jQuery redimensionne événement et vérifier la taille de la fenêtre en cours et décider si nous devons associer ou dissocier nos événements. Voici un violon montrant une façon de le faire. Gardez à l'esprit qu'il y a beaucoup de choses à gérer, comme vérifier si la taille a changé, correctement déconnecter les événements et s'assurer que nous ne continuons pas à relier le même événement. N'hésitez pas à poser des questions.
Comme pour le titre direct de votre question. Vous ne désactivez pas vraiment les événements mais les dissociez et pour désactiver le vol plané vous utilisez: off('mouseenter mouseleave')
. Par jquery docs: https://api.jquery.com/hover/
Pour UNBIND l'exemple ci-dessus l'utilisation:
$ 1 ("td") .off ("mouseenter mouseleave");
Fiddle: https://jsfiddle.net/f81tsgtn/4/
JS:
// Initialize
var $window = $(window);
var $dropdown = $(".dropdown");
var $dropdownMenu = $(".dropdown-menu", $dropdown);
var currentSize = $window.width();
var currentEvent = '';
// Attach current event on load
(currentSize >= 767) ? bindOne('hover') : bindOne('click');
// Atach window resize event
$window.resize(function() {
// get windows new size
var newSize = $window.width();
// Exit if size is same
if (currentSize == newSize) {
return;
}
// Check if its greater/smaller and which current event is attached so we dont attach multiple events
if (newSize >= 767 && currentEvent != 'hover') {
bindOne('hover');
} else if (newSize < 767 && currentEvent != 'click') {
bindOne('click');
}
// Update new size
currentSize = newSize;
});
// Handles binding/unbinding of events
function bindOne (eventType) {
if (eventType == 'hover') {
// Update currentEvent
currentEvent = eventType;
// Make sure all previous events are removed and attach hover
$dropdown.off('click').off('mouseenter mouseleave').hover(
function() {
$dropdownMenu.stop(true, true).fadeIn("fast");
},
function() {
$dropdownMenu.stop(true, true).fadeOut("fast");
}
);
}
else if (eventType == 'click') {
// Update currentEvent
currentEvent = eventType;
// Make sure all previous events are removed and attach hover
$dropdown.off('mouseenter mouseleave').off('click').on('click',
function() {
$dropdownMenu.stop(true, true).fadeToggle("fast");
}
);
}
}
HTML:
<div class="dropdown">
hello
<div class="dropdown-menu">
hello again
</div>
</div>
CSS:
.dropdown-menu {
display: none;
}
Merci! Lorsque vous redimensionnez l'écran à un maximum de 767px, la fonction de survol est désactivée juste ce que je cherchais. –
Content de vous aider. S'il vous plaît n'oubliez pas de marquer la réponse si votre problème est effectivement résolu. – cl0rkster