情况:
我在一个弹出窗口(fancybox)中加载了一个aspx页面的iframe.在那个aspx页面中,我有一个带有onclick事件的按钮,它调用一个自定义函数,在该函数中它会在div上触发.show()函数.这个div有一个样式元素,它包含:display:none ;.
这可以在IE,safari,chrome.这甚至在Firefox加载aspx页面时也可以工作.它在fancybox-iframe弹出窗口中的firefox中不起作用.我没有javascript错误.即使显示:none也不会从style属性中删除,但是div不会显示出来.
从页面的html
<div class="popupWrapper"> ..some elements <div id="psharebutton" style="display:none;"> ..content of the div </div> </div>
JavaScript代码:
function dolinkedin(url,title,summary,source) { $(".smbutton").addClass("buttondisabled"); $("#linklinkedin").removeClass("buttondisabled"); $("#psharebutton").show(); parent.sizefancybox(); }
触发弹出窗口的按钮是一个锚,它有fancyboxiframe类. fancybox会自动生成显示弹出窗口的js代码.
我已经检查了这些主题:
> Jquery Hide/Show not working in Firefox Only?
> Jquery hide/show not working in Firefox/Chrome
> Jquery .show() and .hide() or even .css({“display”:”none”}); not working in firefox?
我已经检查过我的html是否有效.
任何想法?
BHD
解决方法
$("#psharebutton").css("display","inline-block");
代替
$("#psharebutton").show();
jquery“show”与将显示样式属性设置为“block”相同.我发现我需要“inline-block”为Firefox和chrome(我不需要这个为IE).我相信(但还没有确认),jquery足够聪明才能知道以前的显示值是什么,并使用它,但在我的情况下,我开始显示设置为“none”,所以没有以前的值.