Jquery .show()无法在firefox中运行

时间:2011-09-01 08:15:23

标签: jquery firefox show

我在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

4 个答案:

答案 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更容忍显示按钮。