我使用的是jQuery.ScrollTo
脚本能够垂直滚动到所选择的图像(如果容器类“演示”是不是在这里)或下一张照片,并在屏幕中间显示。
注:我已经创建了两个状态。 当用户点击任何图片,我加入了“演示”类的container div
关闭所有图片。 所以,我就知道我是否有显示所选图像或下一个。
这种模式将停止,当用户将在页面内滚动。 要做到这一点,我使用$(window).scroll
事件。
这里是我的问题:在图片上点击事件发生后,某个时刻,我的课“演讲”是由我删除$(window).scroll
事件,但我不知道如何解决它。
以下是演示: http://jsfiddle.net/qnQSP/8/
我在做什么:正如你可以看到,我想创建两种状态:“演示模式”和“无提示模式”。 我激活,当我们在一个项目中加入全球类我的容器“#galleries”点击演示模式。
有了这个类“上”,我能确定,如果我要显示当前图像或滚动到下一个。
要相当的呈现方式,我写了“$(窗口).scroll”功能。 此功能是退出的时候,我们在页面内滚动显示模式。
然而,当我在演示模式中使用.scrollTo功能,我总是退出,因为“$(窗口).scroll”功能,此模式。 所以,我有全局变量“presentation_mode_stop_scrolling”来阻止它。
有时,“$(窗口).scroll”函数被调用一次只是我scrollTo功能后,无法解析它。
这里是我的代码:
HTML:
<div id="galleries">
<div id="pictures-content" class="1"><img src="http://www.sb-designs.co.uk/ckfinder/userfiles/images/free%20web%20hosting.jpg"></div>
<div id="pictures-content" class="2"><img src="http://www.mastercreations.net/wp-content/uploads/2012/10/5.jpg"></div>
<div id="pictures-content" class="3"><img src="http://www.sb-designs.co.uk/ckfinder/userfiles/images/free%20web%20hosting.jpg"></div>
<div id="pictures-content" class="4"><img src="http://www.webdesign4essex.co.uk/images/essex_website_design.jpg"></div>
<div id="pictures-content" class="5"><img src="http://www.mastercreations.net/wp-content/uploads/2012/10/5.jpg"></div>
jQuery的
$(window).scroll(function () {
if(presentation_mode_stop_scrolling=="off")
{
$("#galleries").removeClass("picture_presentation");
}
});
var picture_to_center_class = "";
var picture_to_center="";
$("#galleries #pictures-content").unbind("click");
$("#galleries #pictures-content").bind("click", function(event) {
// Check if we are in the presentation mode
var class_galleries = $("#galleries").attr('class');
if(class_galleries == "picture_presentation")
{
console.log("Presenation mode");
var new_picture = parseInt(picture_to_center_class)+1;
// Stopping the scroll event to cancelled the presentation mode
presentation_mode_stop_scrolling="on";
//scrolling to the next one
var picture_to_center = $("#galleries ."+new_picture);
$("body").scrollTo(picture_to_center, 800, {onAfter:function(){ presentation_mode_stop_scrolling="off"; console.log("galleries class: "+$("#galleries").attr('class'));} });
}
else
{
console.log("Not presenation mode");
// We are adding the presentation mode to the DOM
$("#galleries").addClass("picture_presentation");
// Get the binding element class number
picture_to_center_class = $(this).attr('class');
console.log("picture_to_center: "+picture_to_center_class);
picture_to_center = $("#galleries ."+picture_to_center_class);
// Stoping the (windows).scroll to removed the galleries class
presentation_mode_stop_scrolling="on";
$("body").scrollTo(picture_to_center, 800, {onAfter:function(){ presentation_mode_stop_scrolling="off"; console.log("galleries class: "+$("#galleries").attr('class'));} });
}
});