2011-07-11 27 views
1

一度に表示するコンテンツが多すぎると思ったWebページがありましたので、必要になるまでたくさんの画像を隠すJavaScriptを書きました。そのページの一番下には、「スクリーンショットはここをクリックしてください!」というリンクがあります。クリックすると、JSには、すべてのスクリーンショットが含まれている隠れたスパンが表示されます。リンクテキストが「スクリーンショットを非表示にするにはここをクリック」に変更されます。これはIEとFirefoxで動作しますが、何らかの理由でChromeにはありません(クロムでは、非表示にする前に非表示リンクを3回クリックする必要があります)。コードはかなりシンプルですが、何が間違っているのかわかりません。何か案は?JavascriptはFirefoxとIEでは動作しますがChromeでは動作しません

JS:

$('#show').click(function(){ 
$('#Screenies').show('slow'); 
$('#show').hide(); 
$('#hide').show(); 
}); 

$('#hide').click(function(){ 
$('#Screenies').hide('slow'); 
$('#hide').hide(); 
$('#show').show(); 
}); 

HTML:

<p id="show" style="cursor:pointer; color:Navy"><u>Click here for sceenshots!</u></p> 
<p id="hide" style="cursor:pointer; color:Navy"><u>Hide sceenshots</u></p> 
<span id="Screenies"> 
     [Image links in here] 
</span> 

編集: は、私はこれは、あなたがアニメーション化されているという事実に関係してい

+0

私はhideアニメーションに何か関係があると思われます。あなたはそれなしで試すことができますか? – Mrchief

+1

各メソッドに 'alert()'を追加すると、最初の2回のクリックでchromeに表示されますか? –

+0

chrome用firebugをダウンロードし、console.log()関数を実行して、その機能がクリックされたときに実行されていることを確認するか、またはアラートが働くようにします....:P – Trevor

答えて

2

jQueryの1.6を使用しています言及を忘れましたスパン要素 - なぜ私に尋ねないでください。しかし、セマンティックマークアップを使用している場合は、実際に画像を保持するdivを使用する必要があります。私はあなたのコードも再考しました。だから、あなたは1つのリンクしか必要としません。

$('#show').toggle(function(){ 
    $('#Screenies').show('slow'); 
    $('#show').text('Hide'); 
}, function(){ 
    $('#Screenies').hide('slow'); 
    $('#show').text('Show'); 
}); 

あなたはjQueryのトグル機能read this articleについて知らない場合は、コードの残りの部分は、単純に要素をアニメーション化し、現在の状態に基づいて、リンクテキストを変更します。

+1

なぜあなたは、この場合には非セマンティックする 'span'を検討していますか? 'span'内、' img'要素が正当に、含有させることができるので、当然、インライン要素、置換され、念頭に置いて(インライン要素)。大量の画像がある場合、その後***おそらく***リストがよりセマンティックだろう... –

+0

それはインライン要素なので、私はそれらのそこに多数のため、画像へのリンクが分離されていることを言うだろう、とスパンは他のブロック要素にはラップされません。 –

+0

[OK]を、スパンを変更したdivに変更します。また、コードをリファクタリングしてくれてありがとう^ _ ^今はきれいです。 – CountMurphy

0

Chromeは、コード実行時に要素を見つけることができない可能性があります。次のように、このコードをdocument.readyイベントにラップすることをお勧めします。

$(document).ready(function() { 
$('#show').click(function(){ 
$('#Screenies').show('slow'); 
$('#show').hide(); 
$('#hide').show(); 
}); 

$('#hide').click(function(){ 
$('#Screenies').hide('slow'); 
$('#hide').hide(); 
$('#show').show(); 
}); 
}); 

これは私のためのトリックでした。

+0

文書の準備ができています。私はコードサンプルにそれを含めるべきだったと思います – CountMurphy

関連する問題