【发布时间】:2010-08-28 16:23:03
【问题描述】:
我需要向几个菜单项添加信息弹出窗口,并且我使用 jQuery .hover 来执行此操作。但是,这只适用于 Firefox,不适用于 Safari、Chrome 或 Opera。
var Main = function() {
//other functions...
function _setPopups() {
$(".dt_event_title a").hover(
function(){
$(".info_popup",this).css({"display":"block"});
//$(".info_popup",this).fadeTo("normal",1);
//$(".info_popup",this).fadeIn("normal");
//$(this).find(".info_popup").fadeIn("normal");
},
function(){
$(".info_popup",this).css({"display":"none"});
//$(".info_popup",this).fadeTo("normal",0);
//$(".info_popup",this).fadeOut("normal");
//$(this).find(".info_popup").fadeIn("normal");
}
);
}
return {
//other methods...
"setPopups" : function(){ _setPopups(); }
};
}();
$(document).ready(function(){
//other method calls...
Main.setPopups();
});
我的其他方法在上下文中工作,所以我的关闭很好。被注释掉的 jQuery 行代表了我尝试过的产生相同结果的其他转换:适用于 Firefox,但不适用于其他。我不确定我做错了什么。
仅供参考,.info_popup div 被赋予一个 css 样式 display:none 在外部样式表中隐藏它。
任何帮助将不胜感激。
***这里是一些html...注意这代表输出,html主要由php生成
<tr class="dt_event_title">
<td>
<a class="dt_event_link" href="...php generated link...">
<span class="info_icon"></span>
<span class="event_title">Title of Event</span>
</a>
<div class="info_popup">
...some php generated content
</div>
<div class="dt_event_date">
09-15-2010 02:00 pm - 02:00 pm
</div>
</td>
</tr>
好的,这是我的代码的最新重新排列。 HTML 现在看起来像这样:
<tr>
<td>
<div class="dt_event_title">
<a class="dt_event_link" href="php generated link">
<span class="info_icon"></span>
<span class="event_title">php generated title</span>
</a>
<div class="dt_event_date">php generated date</div>
<div class="info_popup">
<div class='popup_title'>php generated title</div>
<div class='popup_date'>php generated date</div>
<div class='popup_time'>php generated time</div>
<div class='popup_arrow'></div>
</div>
</div>
</td>
</tr>
而 javascript 看起来像这样:
var Main = function() {
function _setPopups() {
$(".dt_event_title").hover(
function(){
$(".info_popup",$(this)).fadeIn("fast");
},
function(){
$(".info_popup",$(this)).fadeOut("fast");
}
);
}
return {
"setPopups" : function(){ _setPopups(); }
};
}();
$(document).ready(function(){
Main.setPopups();
});
还是同样的问题。
【问题讨论】:
-
相关的 HTML 是什么样的?具体来说,那些
<a>元素中有什么?特别注意像<div>这样的块级元素不能嵌套在<a>标签中,所以也许这是IE告诉你你的标记无效的方式。 -
我不知道出了什么问题,只是想让您知道,您可以使用
.show()和.hide()而不是做.css({"display":"none"})和.css({"display":"block"}),它们完全相同。 :) 如果你不知道,对你来说更容易一些。 jquery 位看起来都很好...我不知道您在 jquery 周围做了什么,但是 jquery 位应该可以工作。也许把它写在花哨的嵌套函数之外,看看它是否有效——至少这样你就知道它是 jquery 还是 javascript。 -
我的 a 标签中确实有块级元素,但是即使在重组之后没有 div 标签,行为仍然是一样的......而且要清楚,它不是 IE问题。 Firefox 以外的其他浏览器都无法使用。
-
感谢您的建议,托马斯。我也尝试过 show() 和 hide() (我尝试了几个选项)。我还将代码放在我的闭包之外进行检查。两者都给出了相同的结果。
-
能否包含相关的 HTML,特别是菜单和弹出窗口?
标签: javascript jquery firefox hover