通过jQuery推进highslide画廊

时间:2013-02-19 00:10:14

标签: highslide

这是支持论坛的后续行动(感谢你'RoadRash'的初步帮助!)。

我有一个高级画廊,我试图使用以下javascript / jquery进行推进。画廊里面有大约70张图片。

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

这种方法很有效,但在10或11次函数调用后,图像不再前进。使用chrome调试器我无法确定发生了什么。

我的问题是:

  1. 图库中的图片数量是否有实际限制。
  2. 我正在使用非连续锚点的命名约定。例如,我可能有一个名为'thumb3456',然后下一个将是'thumb5678'highslide是否期望锚点是连续的?
  3. 我在API中错过了方法调用来按索引选择图像吗?
  4. 如果没有快速明显的答案,我将很乐意发布测试链接。

1 个答案:

答案 0 :(得分: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;
};

您可能没有注意到常规页内图库和我的演示库之间的这些重要差异。您的开发库的问题在于,每次在下拉列表中选择新图像时,您实际上都会打开一个新图库。你可以从Thumbtrip缩略图下方的小箭头看到这个;它应该永远不会超过一个箭头,但在您的图库中,每次我们在下拉列表中选择新图像时都会添加一个新箭头。

我已经创建了一个类似于您的开发库的jsFiddle:http://jsfiddle.net/7tSBE/这里更容易看到,当使用下拉列表打开新图像时,画廊堆叠在彼此之上,因为我是图像使用有不同的尺寸。 (此演示没有像在开发库中那样从onImageClick打开顶层图库。)

我无法在这里放置您需要的所有代码,因此我创建了一个与您的开发库非常相似的新演示库(顶部库从onImageClick打开)。 HTML标记与您的标记相同。重要的变化在Highslide设置中,并且除了我上面提到的更改之外还有一些更改。 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();
    });
}