2011-11-08 19 views
0

私はライトボックスのJavaScriptにマイナーなバグを修正しようとしていますが、できるだけ邪魔にならないように編集しています。HTMLアンカーでfalseが返ってもfalseを返さない

例のページ: http://www.mattressonline.co.uk/Product/Silentnight-Miracoil-3-Gold-Label-Limited-Edition-Mattress-P43

問題が主な製品の画像を使用することです。 2つのサムネイルのいずれかをクリックすると、イメージがライトボックス内に期待どおりに読み込まれます。大きな画像をクリックすると、ギャラリー画像をクリックしたイベントが発生し、ライトボックスがポップアップするのを見ることができますが、<タグのデフォルトイベントは>タグがオフになり、画像は別のウィンドウに読み込まれます。このになりません。リンクはfalseを返します。

<a id="gallery-link" class="main" href="#" onclick="click($('gallery-image-0')); return false;" title="Gold Label Mattress"> 
    <img id="gallery-image" src="/content/products/280x175/silentnight-ariel-miracoil-gold-label-limited-edition.jpg" alt="Gold Label Mattress"> 
</a> 

これ以外にも、標準的なプロトタイプ/ scriptaculous/lightbox2設定が用意されています。

falseを返す理由は何もfalseを返さないのですか?信じられないほどイライラします。

編集:IE6と8は、言われたように偽を返します。現行のFF、Chrome、およびIE9はサポートしていません。

答えて

1

:現在のベストプラクティスは、要素がDOMに追加された後にリスナーを添付することです。したがって、return falseに電話する予定ですが、その前に、gallery-image-0は、ブラウザが別のページを開こうとしたclick()コールに応答します。

それは意味がありますか?したがって、ターゲット要素上でclickを観察し、末尾がreturn falseまたはevent.stop()であることを確認する必要があります。

1

通常、目立たないスクリプトとは、インライン属性を使用しないことを意味します。あなたが別のイベントは、アクションの独自のセットを持っていたオフに解雇された後にfalseを返ししようとしている

$('gallery-link').observe('click', function(event) { 
    click($('gallery-image-0')); 
    event.stop(); 
}); 
+0

残念ながら、このようにすると、新しいウィンドウでイメージを読み込むのと同じ結果が得られました。デフォルトのイベントはまだ防止されません。つまり、firebugのコンソールログを追加するようにコードを変更し、イメージのONCEをクリックするとイベントリスナーが2回発生することが判明しました。これはfalseを返す理由です。残念ながら、event.stop()はデフォルトイベントを2回停止しません。 –

関連する問題