我在firefox中遇到了jquery show函数的问题。
情况: 我在弹出窗口(fancybox)中加载了一个带有aspx页面的iframe。在那个aspx页面中,我有一个带有onclick事件的按钮,它调用一个自定义函数,并在该函数中触发div上的.show()函数。这个div有一个样式元素,其中包含:display:none;。
这适用于IE,safari,chrome。当我单独加载aspx页面时,这甚至可以在firefox中运行。它在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代码。
我检查了这些主题:
我已检查过我的HTML是否有效且确实如此。
有什么想法吗?
BHD
答案 0 :(得分:8)
我有类似的问题,我的解决方案是
$("#psharebutton").css("display", "inline-block");
而不是
$("#psharebutton").show();
jquery“show”与将display style属性设置为“block”相同。我发现我需要firefox和chrome的“内联块”(我不需要这个用于IE)。我相信(但尚未确认)jquery足够聪明,可以知道前一个显示值是什么并使用它,但在我的情况下,我开始将显示设置为“none”,因此没有以前的值。
答案 1 :(得分:1)
只需写下$(“#psharebutton”)。attr('display','')或$(“#psharebutton”)。attr('display','block')。
function dolinkedin(url, title, summary, source) {
$(".smbutton").addClass("buttonDisabled");
$("#linklinkedin").removeClass("buttonDisabled");
$("#psharebutton").attr('display','');
parent.sizeFancybox();
}
答案 2 :(得分:1)
我有类似的问题。我确实在我的css中设置了这个:
body { display: none }
并尝试在jQuery中更改此内容:
$("body").show();
在Firefox中不起作用。
我将HTML更改为
<body style="display: none">
并从CSS中删除部分我能够使用jQuery show();无瑕疵
似乎css规则的继承并不遵循Firefox中与IE / Chrome相同的例程。
答案 3 :(得分:0)
这可能只是js错误的副作用。总是值得点击F12并查看控制台中是否存在任何js错误。我有一个类似的问题,我无法弄清楚为什么.show()没有处理在Firefox中具有'display:none'风格的输入,结果发现我有一个形状错误的选择器,它缺少一个关闭]并抛出一个你没看到的错误,直到你打开Firebug。当Firefox抓住糟糕的选择器时,Chrome更容忍显示按钮。