0

編集をできるだけ目立たないようにしながら、ライトボックス Javascript の小さなバグを修正しようとしています。

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

問題はメインの商品画像にあります。2 つのサムネイルのいずれかをクリックすると、期待どおりに画像がライトボックス内に読み込まれます。大きな画像をクリックすると、ギャラリー画像をクリックするイベントが発生し、ライトボックスがポップアップし始めますが、その後 <a> タグのデフォルト イベントが発生し、画像が別のウィンドウに読み込まれます。リンクは return 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 セットアップです。

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

編集: IE6 および 8 DO は、言われたとおりに false を返します。現在の Firefox、Chrome、および IE9 にはありません。

4

2 に答える 2

1

独自のアクション セットを持つ別のイベントが発生した後で、false を返そうとしています。そのため、電話をかける予定がありますが、電話をかけるreturn false前に、ブラウザーが別のページを開く原因となっている可能性がある呼び出しにgallery-image-0応答します。click()

それは理にかなっていますか?したがって、ターゲット要素を観察し、またはclickで終わることを確認する必要があります。return falseevent.stop()

于 2011-11-18T21:15:41.040 に答える
1

通常、控えめなスクリプトとは、インライン属性を使用しないことを意味します。現在のベスト プラクティスは、要素が DOM に追加された後にリスナーをアタッチすることです。

$('gallery-link').observe('click', function(event) {
    click($('gallery-image-0'));
    event.stop();
});
于 2011-11-09T15:06:13.160 に答える