首先我道歉...我之前发过这个问题,但是我解释得不好。我在将hoverIntent插入以下JavaScript时遇到问题...我需要它来替换下面的mouseenter
和mouseleave
函数。为了清楚起见,我正在寻求帮助,因为我对JavaScript语法不是很了解。下面的第二个代码片段似乎应该可以工作,但它什么都不做,似乎在Internet Explorer中完全死了。
if (jQuery.browser.msie === true) {
jQuery('#top_mailing')
.bind("mouseenter",function(){
$("#top_mailing_hidden").stop().slideDown('slow');
})
.bind("mouseleave",function(){
$("#top_mailing_hidden").stop().slideUp('slow');
});
}
我正在将以下内容用于其他浏览器,但它在Internet Explorer中无法正常运行。
$('#top_mailing').hoverIntent(
function () {
$("#top_mailing_hidden").stop().slideDown('slow');
},
function () {
$("#top_mailing_hidden").stop().slideUp('slow');
}
);
答案 0 :(得分:3)
我想我发现了问题。
您正在拨打$('#top_mailing').hoverIntent(...
两次。一旦位于hoverintent_r5.js文件的底部,一次位于custom.js文件中。显然IE不喜欢这样。摆脱其中一个,它应该没问题。
将所有代码保存在自己的js文件中可能更好。否则很容易忘记。
编辑:避免stop()问题。
我更喜欢动画:
$('#top_mailing').hoverIntent(
function () {
$("#top_mailing_hidden").stop().animate({height:150},'slow');
},
function () {
$("#top_mailing_hidden").stop().animate({height:0},'slow');
}
);
这样,当你需要停下来并改变方向时,它总会知道去哪里。 (上例中为0和150.)
请注意,这需要top_mailing_hidden设置clip:auto; overflow:hidden
。
由于您正在使用hoverIntent,因此可能不需要调用stop(),因为hoverIntent旨在避免那些意外的鼠标悬停事件。
稍微偏离主题:
在实施过程中记住一件事。由于这是一个填写的表单,用户可能(甚至没有想到)在开始键入时将鼠标移开。这将导致表格消失。
考虑到这一点,您可能需要重新考虑执行mouseout事件。当用户提交表单时,您可以随时将其向上滑动,并带有可选的“取消”或“关闭”按钮。