.lockToggle( ) jQuery
.lockToggle( ) jQuery
本文关键字:jQuery lockToggle 更新时间:2023-09-26
我试图使用这个脚本来冻结滚动时,一个'lightbox样式'的图像打开。脚本中可能有一个小错误,但我无法找出
jQuery.fn.lockToggle = function () {
var top = $(window).scrollTop();
var left = $(window).scrollLeft();
var clickCount = 0;
$(this).click(function() {
clickCount++;
if(clickCount % 2 === 1 ){
$('body').css('overflow', 'hidden');
$(window).scroll(function(){
$(this).scrollTop(top).scrollLeft(left);
});
} else {
$('body').css('overflow', 'auto');
$(window).unbind('scroll');
}
});
return this;
};
这个脚本是如何工作的(按显示顺序):
- 获取当前滚动位置并将其存储在两个变量 中
- 为对象的点击次数创建变量
- 如果点击计数为奇数,则将页面冻结在当前位置
- Else(是偶数)则允许页面自由滚动
所有这些都在一个简单的jQuery函数中工作,只需调用.lockToggle()
你可以在这里查看完整的示例:
http://jsfiddle.net/JamesKyle/8H7hR/30/(点击图片)
每次单击都绑定一个单击事件。每次都会绑定越来越多的事件,并且不会立即执行锁定。这似乎不是你想要的。
从我的理解,你所指的错误是,滚动不锁定时点击,并没有解锁时再次点击。您可以使用一个简单的isLocked
变量正确地实现这一点,如下所示:http://jsfiddle.net/8H7hR/32/.
var isLocked = false;
jQuery.fn.lockToggle = function () {
var top = $(window).scrollTop();
var left = $(window).scrollLeft();
if(isLocked) { // locked so unlock
isLocked = false;
$('body').css('overflow', 'auto');
$(window).unbind('scroll');
} else { // unlocked so lock
isLocked = true;
$('body').css('overflow', 'hidden');
$(window).scroll(function(){
$(this).scrollTop(top).scrollLeft(left);
});
}
return this;
};
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery:循环一个具有不同超时值的循环
- 用程序搜索JQuery数据表中的文本
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jQuery匹配JSON对象的部分文本
- Jquery POST未填充数组
- JQuery使计数器每次更改时都会增加
- 如何在Angular2中使用jQuery插件
- 提高JQuery的性能
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JQuery合并了keyup和focusout两个函数
- 如何使用jQuery选择下拉列表的值
- 将PHP变量传递给jQuery时遇到问题
- jQuery UI自动完成突然停止工作
- 剑道网格jQuery动画()问题
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- jquery点击函数select&取消选择
- .lockToggle( ) jQuery