Jquery .show () не работает в Firefox - PullRequest
11 голосов
/ 01 сентября 2011

У меня проблема с функцией jquery show в Firefox.

Ситуация: я загрузил iframe со страницей aspx во всплывающем окне (fancybox).На этой странице aspx у меня есть кнопка с событием onclick, которое вызывает пользовательскую функцию, и в этой функции она запускает функцию .show () в div.Этот div имеет элемент стиля, который содержит: display: none ;.

Это работает в IE, Safari, Chrome.Это даже работает в Firefox, когда я загружаю страницу aspx автономно.Это не работает в Firefox во всплывающем окне fancybox-iframe.Я не получаю ошибок JavaScript.Даже отображение: ни один не удаляется из атрибута стиля, но 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 ]

8 голосов
/ 15 августа 2012

У меня была похожая проблема, и мое решение было сделать

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

вместо

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

JQuery «show» идентичен установке атрибута стиля отображения «block». Я обнаружил, что мне нужен «встроенный блок» для Firefox и Chrome (мне не нужно это для IE). Я считаю (но не подтвердил), что jquery достаточно умен, чтобы знать, каково предыдущее значение отображения, и использовать его, но в моем случае я начал с отображения, настроенного на «нет», поэтому предыдущего значения не было.

1 голос
/ 06 февраля 2014

У меня была похожая проблема.Я установил это в моем css:

body { display: none }

и попытался изменить это в jQuery:

$("body").show();

, который не работал в Firefox.

После того, как я изменилсяHTML до

<body style="display: none">

и удаление части из CSS Я смог использовать jQuery show ();безупречный

Кажется, что наследование правил CSS не следует той же самой процедуре в Firefox, что и в IE / Chrome.

1 голос
/ 01 марта 2012

Просто запишите как $ ("# psharebutton"). Attr ('display', '') или $ ("# psharebutton"). Attr ('display', 'block').

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

        parent.sizeFancybox();
    }
0 голосов
/ 04 марта 2015

Это может быть просто побочным эффектом ошибки js.Всегда стоит нажать F12 и посмотреть, есть ли какие-либо ошибки js в консоли.У меня была похожая проблема, когда я не мог понять, почему .show () не работал на входе, который имел стиль «display: none» в Firefox, и оказалось, что у меня был плохо сформированный селектор, в котором отсутствовалзакрытие] и выдавал ошибку, которую вы не видите, пока не откроете Firebug.Chrome был более терпимым, показывал кнопку, в то время как Firefox ловил плохой селектор.

...