Javascript 悬停时截取显示更改?
我有一些元素,在悬停时,切换子对象的显示(无/块)。不幸的是,我不能通过CSS转换淡入显示。使用不透明度也不起作用,因为悬停区域扩展到不透明度:0 ul,并且两者的组合(过渡不透明度,但仍然切换显示)似乎不起作用Javascript 悬停时截取显示更改?,javascript,css,Javascript,Css,我有一些元素,在悬停时,切换子对象的显示(无/块)。不幸的是,我不能通过CSS转换淡入显示。使用不透明度也不起作用,因为悬停区域扩展到不透明度:0 ul,并且两者的组合(过渡不透明度,但仍然切换显示)似乎不起作用 有没有一种方法可以通过Javascript截获显示更改,并使其在block和none之间消失?是否有其他建议(我也尝试了高度:0/自动切换,效果不好)?我更喜欢截取方法,而不是纯JS方法,以防JS被禁用或其他情况。如果我理解正确的话。假设是这样的: 您可以在父对象上侦听鼠标悬停,因为它
有没有一种方法可以通过Javascript截获显示更改,并使其在block和none之间消失?是否有其他建议(我也尝试了高度:0/自动切换,效果不好)?我更喜欢截取方法,而不是纯JS方法,以防JS被禁用或其他情况。如果我理解正确的话。假设是这样的:
您可以在父对象上侦听鼠标悬停,因为它包含子对象:
var parent = document.getElementsByClassName('nav-container')[0];
var connect = function (element, event, callback) {/* I think you */};
var disconnect = function (handle) { /* can find */};
var addClass = function (element, className) { /* these elsewhere. */};
var removeClass = function (element, className) { /* ... */};
var hoverHandle = connect(parent, 'hover', function (event) {
addClass(parent, 'hovered');
if (blurHandle) {
disconnect(blurHandle);
}
});
var blurHandle = = connect(parent, 'blur', function (event) {
removeClass(parent, 'hovered');
if (hoverHandle) {
disconnect(hoverHandle);
}
});
然后在CSS中:
.nav-container > ul {
display: none;
/* do fade out */
}
.nav-container.hovered > ul {
display: block;
/* do fade in */
}
如果您使用的是jQuery 1.7,那么它将变成:
var navContainers = $('.nav-container');
navContainers.on('hover', function () {
$(this).toggleClass('hovered');
});
navContainers.on('blur', function () {
$(this).toggleClass('hovered');
});
如果我理解正确的话。假设是这样的:
您可以在父对象上侦听鼠标悬停,因为它包含子对象:
var parent = document.getElementsByClassName('nav-container')[0];
var connect = function (element, event, callback) {/* I think you */};
var disconnect = function (handle) { /* can find */};
var addClass = function (element, className) { /* these elsewhere. */};
var removeClass = function (element, className) { /* ... */};
var hoverHandle = connect(parent, 'hover', function (event) {
addClass(parent, 'hovered');
if (blurHandle) {
disconnect(blurHandle);
}
});
var blurHandle = = connect(parent, 'blur', function (event) {
removeClass(parent, 'hovered');
if (hoverHandle) {
disconnect(hoverHandle);
}
});
然后在CSS中:
.nav-container > ul {
display: none;
/* do fade out */
}
.nav-container.hovered > ul {
display: block;
/* do fade in */
}
如果您使用的是jQuery 1.7,那么它将变成:
var navContainers = $('.nav-container');
navContainers.on('hover', function () {
$(this).toggleClass('hovered');
});
navContainers.on('blur', function () {
$(this).toggleClass('hovered');
});
你能发布你的html吗?你可以使用下面的例子。像:
- 嗨。
- 的内容都可以。
- 这样的东西就足够了。你能发布你的html吗?你可以使用下面的例子。任何类似于:
- 就足够了。编辑:有几个输入错误。谢谢!我正在使用jquery,里面有什么东西可以帮助简化您的代码吗?相当多:)我将添加一个修订版。编辑:有几个输入错误。谢谢!我正在使用jquery,其中是否有一些东西可以帮助简化您的代码?相当多:)我将添加一个修订。