【发布时间】:2013-12-13 02:58:42
【问题描述】:
目标
如果用户的视口达到某个值,我需要停止或启动:
jQuery(window).on('resize'){ // ... }
场景
假设我们有以下数组(在 JavaScript 中):
var ranges = [1024, 1280];
当用户的视口达到ranges'数组设置的值之间的宽度时,我使用jQuery(window).on('resize'){} 和一些ifs 来执行操作。
但我只想在视口超出或在数组宽度范围内时运行这些“东西”。我的意思是,当用户的视口在1024px x 1280pxof 宽度之间时,jQuery(window).on('resize'){} 应该停止运行,但是当视口超出范围时它需要唤醒以执行我想要的另一件事。
游乐场
为了更好地理解问题,打开您的控制台和take a look in this jsFiddle。
您会看到控制台打印 “Hi”每次 jsFiddle JavaScript 的 Window 的宽度发生变化,我想显示一次。
天啊,你傻吗?!你的脚本是错误的,因为这里没有打印任何东西。冷静点,伙计! jsFiddle 不会将 $(window) 解释为浏览器的窗口。要运行该功能,您应该调整结果窗口的大小。看:
我所期待的,实际上
根据上面的脚本,我想看到Hi!,就在视口进入1024px x 1280px 之间的某个宽度时——一次。当视口在外面时,什么也没有发生,但是当视口再次进入指定宽度时,打印Hi! — 再次和一次。
我尝试了什么?
实际上,我被困住了。我的大脑无法思考解决方案——我需要一盏灯!
怀疑?我说的还不够清楚?
请评论您的问题!
重复?
发布链接或标记为重复 - 我之前没有看到任何类似的主题(抱歉)。
【问题讨论】:
-
你的小提琴似乎工作正常,我只得到你好!当窗口在范围之间时。
-
是的,完美运行!!但 ! “你应该移动 JavaScript 的窗口”不!实际上,您正在移动结果窗口。通过顶部或底部调整 JS 窗口的大小,什么都不会发生 ;)
-
@dSquared 我的坏朋友——我只想看到“嗨!”一次。
-
@TCHdvlp 你说得对。但这只是一个细节,哈哈。
-
把 dSquared 的评论加红色。你试图做什么与状态机制非常相似,有两种状态。国界之内,国界外之国。保存和/或修改某物状态的最佳方法是什么。我建议使用像
var state=0 //inside这样的变量。每次调整窗口大小时,检查状态。
标签: javascript jquery