0

これはサポートフォーラムからのフォローアップです(最初のヘルプをありがとう'RoadRash'!)。

私は次のjavascript/jqueryで進めようとしているハイスライドギャラリーを持っています。ギャラリーには約70枚の画像があります。

function changeImage()
{
  var theValue = $('#lstOptions2').val();
  $('#thumb' + theValue).trigger('click');
}

これはしばらくの間はうまく機能しますが、10回または11回の関数呼び出しの後、画像は前進しなくなります。Chromeデバッガーを使用して、何が起こっているのかを判断できません。

私の質問は次のとおりです。

  1. ギャラリー内の画像の数に実際的な制限はありますか?
  2. 連続しないアンカーの命名規則を使用しています。たとえば、「thumb3456」という名前の1つがあり、次は「thumb5678」になります。highslideは、アンカーが連続していることを期待していますか?
  3. インデックスで画像を選択するためにAPIで見逃したメソッド呼び出しはありますか?

すぐにわかる答えがない場合は、テストリンクを投稿させていただきます。

4

1 に答える 1

1

送信された開発ギャラリーから、サムストリップの通常のサムネイルに加えて、ドロップダウンリストを使用して画像を変更しているページはめ込みギャラリーを使用していることがわかります。

これは通常のページ内ギャラリーです:http://highslide.com/examples/gallery-in-page.html このギャラリーは、すべてのHighslideギャラリーと同様に、ページの上部に浮かんでいますが、ページ内ギャラリーにはコードがありますそれが閉じられるのを防ぐために。

これは、古いフォーラムで作成したデモギャラリーです。http://jsfiddle.net/roadrash/y5nZA/onchangeドロップダウンリストから新しい画像を選択するたび に、ギャラリーが閉じられることに注意してください。

onchange="document.getElementById(this.options[this.selectedIndex].value).onclick(); hs.close()"

からギャラリーを閉じることができるようにするにonchangeは、ハイスライド設定でこの部分を削除する必要があります。

// Under no circumstances should the static popup be closed
hs.Expander.prototype.onBeforeClose = function() {
    if (/in-page/.test(this.wrapper.className)) return false;
}

また、これを追加します。これは、HighslideもESCキーから閉じることができるためです。これは防止したいのです。

// Prevent to close the gallery from ESC key
hs.onKeyDown = function (sender, e) {
    if( e.keyCode == 27 ) return false;
};

通常のページはめ込みギャラリーと私のデモギャラリーのこれらの重要な違いにおそらく気づかなかったでしょう。開発ギャラリーの問題は、ドロップダウンリストで新しい画像を選択するたびに実際に新しいギャラリーを開くことです。これは、サムストリップのサムネイルの下にある小さな矢印から確認できます。複数の矢印であってはなりませんが、ドロップダウンリストで新しい画像を選択するたびに、ギャラリーに新しい矢印が追加されます。

私はあなたの開発ギャラリーに似たjsFiddleを作成しました:http://jsfiddle.net/7tSBE/ここでは、ドロップダウンリストを使用して新しい画像を開くときに、使用している画像のサイズが異なるため、ギャラリーが互いに積み重なっていることをさらに簡単に確認できます。(このデモでは、開発ギャラリーのようにonImageClickからトップギャラリーを開くことはできません。)

ここに必要なコードをすべて入れることはできないので、開発ギャラリーに非常によく似た新しいデモギャラリーを作成しました(一番上のギャラリーはonImageClickから開きます)。HTMLマークアップはあなたのものと同じです。重要な変更はハイスライド設定にあり、上記の変更よりもいくつか変更があります。http://jsfiddle.net/roadrash/y5nZA/1/

hs.close();これは、コードを追加する必要がある部分です(後の行ChangeImage();)。このコードは私のデモページでは同じようには見えません。

function SetImageSwatchEvents() {
    $('#lstOptions').bind('change', function () {
        SetImageSwatches(1);
    });

    $('#lstOptions2').bind('change', function () {
        SetImageSwatches(2);
        ChangeImage();
        hs.close();
    });
}
于 2013-02-19T21:48:53.030 に答える