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


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


4966
2017-09-01 08:15


起源

你试过$(“#psharebutton”)。toggle(); ? - S Philp
我没有代码te再现:(对不起 - Maarten Kieft


答案:


我有类似的问题,我的解决方案是做

$("#psharebutton").css("display", "inline-block");

代替

$("#psharebutton").show();

jquery“show”与将display style属性设置为“block”相同。我发现我需要firefox和chrome的“内联块”(我不需要这个用于IE)。我相信(但尚未确认)jquery足够聪明,可以知道前一个显示值是什么并使用它,但在我的情况下,我开始将显示设置为“none”,因此没有以前的值。


8
2017-08-15 12:16



你的答案和DJ的答案可能是解决方案,不幸的是我再也无法重现它,但在看到类似的行为之后,我确定确实是这样的。我投了你的答案。 - Maarten Kieft


只需记下$(“#psharebutton”)。attr('display','')或$(“#psharebutton”)。attr('display','block')。

function dolinkedin(url, title, summary, source) {
        $(".smbutton").addClass("buttonDisabled");
        $("#linklinkedin").removeClass("buttonDisabled");
        $("#psharebutton").attr('display','');

        parent.sizeFancybox();
    }

1
2018-03-01 09:20



看看我在kirk的评论:) - Maarten Kieft


我有类似的问题。我确实在我的CSS中设置了这个:

body { display: none }

并尝试在jQuery中更改此内容:

$("body").show();

这在Firefox中不起作用。

我将HTML更改为

<body style="display: none">

从CSS中删除部分我能够使用jQuery show();完美无瑕

似乎css规则的继承并不遵循Firefox中与IE / Chrome相同的例程。


1
2018-02-06 08:38



谢谢你的回答,这可能对其他人有帮助:) - Maarten Kieft


它可能只是js错误的副作用。总是值得点击F12,看看控制台中是否有任何js错误。我有一个类似的问题,我无法弄清楚为什么.show()没有处理在Firefox中具有'display:none'样式的输入,结果发现我有一个形状错误的选择器,它缺少一个关闭]并抛出一个你没看到的错误,直到你打开Firebug。当Firefox捕获坏选择器时,Chrome更宽容地显示了该按钮。


0
2018-03-04 14:46