2011-09-01 28 views
10

firefoxでjquery show関数に問題があります。jquery .show()がfirefoxで動作しない

状況: aspxページを含むiframeをポップアップ(fancybox)に読み込んでいます。そのaspxページで私はカスタム関数を呼び出すonclickイベントを持つボタンを持っており、その関数ではdivの.show()関数を起動します。このdivには、次の要素を含むstyle要素があります。display:none;

これはIE、safari、chromeで動作します。これは、aspxページをスタンドアロンで読み込むと、Firefoxでも機能します。 fancybox-iframeポップアップでは、Firefoxでうまく動作しません。私はjavascriptのエラーを取得します。 display:noneもstyle属性から削除されますが、divは表示されません。

ページ

<div class="popupWrapper"> 
    ..some elements 
    <div id="psharebutton" style="display:none;"> 
    ..content of the div 
    </div> 
</div> 

からhtmlのjavascriptのコード:

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

     parent.sizeFancybox(); 
    } 

ポップアップがトリガされたボタンは、fancyboxiframeクラスを持つアンカー、です。 Fancyboxは自動的にポップアップを表示するためのjsコードを生成します。

私はこれらのトピックをチェックしています

私のHTMLが有効であり、それがある場合、私がチェックしています。

BHD

+0

あなたは$( "#psharebutton")を試してみましたか?toggle(); ? –

+0

私はもうコードを再現しません:(申し訳ありません。 –

答えて

8

私は同様の問題を抱えていたし、私の解決策は、jqueryの「ショーは」ブロック」に表示スタイル属性を設定することと同じである代わりに

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

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

を行うことでした"私はfirefoxとchromeのために "インラインブロック"が必要であることを発見しました(私はIEのためにこれを必要としませんでした)。私は、jqueryが以前の表示値が何であるかを知るのに十分スマートであると確信していますが、確認していませんが、私の場合は "none"に設定された表示から始めました。

+1

あなたの答えとDJの答えは多分解決できませんでしたが、残念ながら私はもうそれを再現できません。行動私は確かにそれが事実だったことをやめる。私は両方のあなたの答えに投票しました。 –

1

だけで$( "#のpsharebutton")のように書き留める。ATTR( '表示'、 '')または$( "#のpsharebutton")。attrの( '表示'、 'ブロック')。

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

     parent.sizeFancybox(); 
    } 
+0

kirkで私のコメントを見てください:) –

1

私は同様の問題がありました。

body { display: none } 

をとjQueryでこれを変更しようとしました:私は私のCSSでこれを設定したのFirefoxで動作しませんでした

$("body").show(); 

私は

<body style="display: none"> 

と私はjQueryのショーを使用することができたCSSの一部を除去するHTMLを変更した後に(); flawless

IEのクロムと同じように、CSSルールの継承がFirefoxの同じルーチンに従っていないようです。

+0

あなたの答えをありがとう、それはおそらく他の人にとって有益です:) –

0

jsエラーの単なる副作用かもしれません。 F12を押して、コンソールにjsエラーがあるかどうかを調べることは、常に価値があります。私は、なぜ、.show()がFirefoxで 'display:none'というスタイルを持っている入力を処理していなかったのかわからない同様の問題を抱えていました。あなたがFirebugを開くまであなたは見ていないエラーを投げた。 Firefoxは、悪いセレクタをキャッチしながら、Chromeは、より寛容なボタンを示した。

関連する問題