Comments (4)
Here's what I'm using in one example so that multiple menus are not
fighting.
return this.each(function() {
var $this = $(this),
$parent = $this.parent(),
defaults = {
delay: 500,
delayShow: 300,
instantlyCloseOthers: true
},
data = {
delay: $(this).data('delay'),
delayShow: $(this).data('delay-show'),
instantlyCloseOthers: $(this).data('close-others')
},
settings = $.extend(true, {}, defaults, options, data),
delayHide,
delayShow;
$parent.hover(function(event) {
// so a neighbor can't open the dropdown
if(!$parent.hasClass('open') && !$this.is(event.target)) {
return true;
}
if(shouldHover) {
window.clearTimeout(delayHide);
delayShow = window.setTimeout(function() {
if(settings.instantlyCloseOthers === true) {
$allDropdowns.removeClass('open');
}
$parent.addClass('open');
}, settings.delayShow);
}
}, function() {
if(shouldHover) {
window.clearTimeout(delayShow);
delayHide = window.setTimeout(function() {
$parent.removeClass('open');
}, settings.delay);
}
});
// handle submenus
$parent.find('.dropdown-submenu').each(function(){
var $this = $(this),
subDelayHide,
subDelayShow;
$this.hover(function() {
if(shouldHover) {
window.clearTimeout(subDelayHide);
subDelayShow = window.setTimeout(function() {
$this.children('.dropdown-menu').show();
// always close submenu siblings instantly
$this.siblings().children('.dropdown-menu').hide();
}, settings.delayShow);
}
}, function() {
var $submenu = $this.children('.dropdown-menu');
if(shouldHover) {
window.clearTimeout(subDelayShow);
subDelayHide = window.setTimeout(function() {
$submenu.hide();
}, settings.delay);
} else {
// emulate Twitter Bootstrap's default behavior
$submenu.hide();
}
});
});
});
On Thu, Aug 22, 2013 at 8:38 PM, Alistair Burrowes <[email protected]
wrote:
Can there be a configurable delay before opening a dropdown?
- Hover over menu item.
- Keep mouse hovered until X milliseconds.
- Dropdown appears.
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/30
.
from bootstrap-hover-dropdown.
I am not sure what @jrchamp means by by "fighting."
But "hover intent" (a delay before a nav item opens) is not a current feature, and not one I have time/interest in adding. From what I've seen, it's not particularly trivial to implement.
from bootstrap-hover-dropdown.
No worries. I got it working in the end by just changing the .hover lines to .hoverIntent (using the jquery plugin).
Cheers
from bootstrap-hover-dropdown.
Yeah, that's a good solution.
That jQuery hover intent is larger than my plugin (comparing both minified versions)… so it would seem silly to more than double the size of my plugin for that one feature!
On Aug 26, 2013, at 10:57 PM, Alistair Burrowes [email protected] wrote:
No worries. I got it working in the end by just changing the .hover lines to .hoverIntent (using the jquery plugin).
Cheers
—
Reply to this email directly or view it on GitHub.
from bootstrap-hover-dropdown.
Related Issues (20)
- Versions do not update on CDNJS.com HOT 6
- Hover is not working in Chrome Version 47.0.2526.80 m HOT 6
- demo site down? HOT 2
- Doesn't work on Firefox 43.0.4 on Windows 10 Professional. HOT 2
- Problem when navbar is collapsed HOT 4
- Problem with hover on <a> ? HOT 3
- Deactivate hover when in "mobile mode" HOT 4
- Mouseover inputbox's remembered value will close the nav
- invalid-meta bootstrap-hover-dropdown
- Can't toggle dropdown on touch devices unless using bootstrap's data-toggle="dropdown" HOT 1
- Hover works only sometimes HOT 5
- shown.bs.dropdown & hidden.bs.dropdown are not triggered HOT 2
- When the 'a' tag has child elements the hover doesnt always work because of the event.target HOT 12
- Can't seelct the top level nav item HOT 2
- Delay option for submenus
- Anchor element gets hidden HOT 1
- Padding and margin prevents openDropdown event
- Doesn't work on Firefox 57.0.2 (64-bit) HOT 2
- My hover silently fails... HOT 3
- Any chance to implement Bootstrap 5 support?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bootstrap-hover-dropdown.