JQuery.show() не работает в firefox
У меня проблема с функцией show jquery в firefox.
Ситуация:
Я загрузил iframe с aspx-страницей во всплывающем окне (fancybox). На этой странице aspx у меня есть кнопка с событием onclick, которое вызывает пользовательскую функцию, и в этой функции она запускает функцию .show() в div. Этот div имеет элемент стиля, который содержит: display: none;.
Это работает в IE, сафари, хром. Это даже работает в firefox, когда я загружаю страницу aspx отдельно. Он не работает в firefox в всплывающем окне fancybox-iframe. Я не вижу ошибок JavaScript. Даже дисплей: ни один не удаляется из атрибута 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();
}
Кнопка, в которой запускается всплывающее окно, является якорем, который имеет класс fancyboxframe. Fancybox автоматически генерирует js-код для отображения всплывающего окна.
Я проверил эти темы:
Я проверил, действительно ли мой html и он есть.
Любая идея?
BHD
Ответы
Ответ 1
У меня была аналогичная проблема, и я решил сделать
$("#psharebutton").css("display", "inline-block");
вместо
$("#psharebutton").show();
JQuery "show" идентичен настройке атрибута стиля отображения "block". Я обнаружил, что мне нужен "встроенный блок" для firefox и chrome (мне это не нужно для IE). Я считаю (но не подтвердил), что jquery достаточно умен, чтобы узнать, что такое предыдущее отображаемое значение, и использовать его, но в моем случае я начал с отображения, установленного на "none", поэтому прежнего значения не было.
Ответ 2
Просто напишите как $( "# psharebutton" ). attr ('display', '') или $( "# psharebutton" ). attr ('display', 'block').
function dolinkedin(url, title, summary, source) {
$(".smbutton").addClass("buttonDisabled");
$("#linklinkedin").removeClass("buttonDisabled");
$("#psharebutton").attr('display','');
parent.sizeFancybox();
}
Ответ 3
У меня была аналогичная проблема. Я сделал это в моем css:
body { display: none }
и попытался изменить это в jQuery:
$("body").show();
который не работал в Firefox.
После того, как я изменил HTML на
<body style="display: none">
и удалив часть из CSS, я смог использовать jQuery show(); безупречна
Кажется, что наследование правил css не соответствует той же самой процедуре в Firefox, что и в IE/Chrome.
Ответ 4
Это может быть только побочный эффект ошибки js. Всегда стоит нажать F12 и увидеть, есть ли какие-либо ошибки js в консоли. У меня была аналогичная проблема, когда я не мог понять, почему .show() не работал над входом, который имел стиль "display: none" в Firefox, и оказалось, что у меня был плохо сформированный селектор, который отсутствовал закрытие] и выбросил ошибку, которую вы не видите, пока не откроете Firebug. Chrome был более терпимым, показал кнопку, в то время как Firefox поймал плохой селектор.