首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jQuery滚动时保留var的原始值

在jQuery中,如果你想在滚动事件中保留一个变量的原始值,你需要确保这个变量在滚动事件外部被声明和初始化。这是因为JavaScript中的变量作用域规则决定了变量的可见性和生命周期。

基础概念

  • 变量作用域:决定了变量的可见性和生命周期。在JavaScript中,有全局作用域和局部作用域。
  • 闭包:允许函数访问其词法作用域中的变量,即使函数在其词法作用域之外执行。

相关优势

  • 保持状态:通过闭包,可以在函数执行完毕后仍然保留对变量的引用。
  • 避免全局污染:使用闭包可以避免将变量声明为全局变量,减少命名冲突和潜在的bug。

类型

  • 立即执行函数表达式(IIFE):一种常见的创建闭包的方式,用于创建一个新的作用域。

应用场景

  • 事件处理:如滚动、点击等事件中保留状态。
  • 回调函数:在异步操作中保持数据的完整性。

示例代码

以下是一个简单的例子,展示了如何在jQuery滚动事件中使用闭包来保留变量的原始值:

代码语言:txt
复制
$(document).ready(function() {
    // 声明变量并初始化
    var originalValue = 10;

    // 使用IIFE创建闭包
    (function(value) {
        $(window).scroll(function() {
            // 在这里,value变量保留了原始值
            console.log('Original value:', value);
        });
    })(originalValue);
});

在这个例子中,originalValue 是在文档加载完成后立即声明并初始化的。通过立即执行函数表达式(IIFE),我们创建了一个新的作用域,并将originalValue作为参数传递给这个函数。这样,在滚动事件处理函数内部,value变量就保留了originalValue的原始值。

遇到的问题及解决方法

如果你在滚动事件中发现变量的值发生了变化,可能是因为变量在滚动事件内部被重新赋值了。确保变量在滚动事件外部声明,并且没有在事件处理函数内部被修改。

如果需要在滚动过程中更新变量的值,但又想保留原始值,可以考虑使用另一个变量来存储更新后的值,而原始值保持不变。

代码语言:txt
复制
$(document).ready(function() {
    var originalValue = 10;
    var currentValue = originalValue;

    $(window).scroll(function() {
        // 更新currentValue,但originalValue保持不变
        currentValue = calculateNewValue();
        console.log('Original value:', originalValue);
        console.log('Current value:', currentValue);
    });

    function calculateNewValue() {
        // 这里可以是任何计算逻辑
        return originalValue + 1;
    }
});

在这个例子中,originalValue始终保持初始值,而currentValue在每次滚动时都会更新。这样可以确保原始值不会被意外修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

jQuery(一)

://api.jquerymobile.com/ ps 该项目博客保留在2017年,提交截止在去年,测试状态不通过 https://travis-ci.org/jquery/jquery-mobile/...如果在自己代码中使用$作为变量,为了避免冲突,通过调用 jQuery.noConflict() 释放$变量,让其指向原始值 其拥有两个名字的全局方法为jquery的核心查询方法。...即 jQuery( () => {} ) 上方当文档加载完毕的时候将会执行一个匿名函数 一些术语 函数 jQuery函数可以创建jQuery对象,用来注册DOM就绪时需要调用的处理程序。...jQuery将会使用同一个方法既当getter又做setter,而不是定义一对方法,如果传入一个新值给方法,则它将设置此值。 用做setter时,这些方法会给jquery对象中的每个元素设置值。...// 得到页面的大小(文档的大小) var current = w.scrollTop(); // 得到当前滚动条的位置 w.scrollTop(current + n*pagesize); //

2.1K40

利用“Google Tag Manager V2”实现滚动追踪

好好利用“滚动追踪功能”吧。用户向下滚动页面时,这个功能能够搜集阅读完成度,并以百分比形式来呈现,例如0%,25%,50%,75%和100%,像素深度及阅览时间等有价值的信息。...也许初看时,你会很难理解如何通过Google Tag Manager实现“滚动追踪”。但是如果你遵循本文中所说的主要步骤,你会发现实现深度滚动追踪是很容易且有价值的。 让我们开始吧。...(脚本较长,置于本文的最末端,建议您收藏本文后时间较为宽裕时再进行参考和设置) 滚动追踪准备:第二步 部署好上述“滚动追踪”程序代码后,使用你的谷歌ID和密码登陆https://tagmanager.google.com...此标签将保留我们的“下拉浏览深度”(Scroll Depth)代码。 因此,将代码复制并覆盖到CUSTOM HTML TAG中。在此段时间内保存此标签。等我们创建完触发器后,会回来对它进行重新配置。...“值”就是你的网站网址,然后保存该标签。 滚动追踪实施:设置变量 在Google Tag Manager中,需要遵循一项规则:每个“标签”都需要对应“触发器”。每个触发器都需要“变量”来触发。

1.9K70
  • 杨老师课堂之Jquery的筛选,事件,效果,Ajax,javascript跨域)

    返回值:Booleanis(expr|obj|ele|fn),根据选择器、DOM元素或 jQuery 对象来检测匹配元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true。...map(callback),将一组元素转换成其他数组(不论是否是元素数组) has(expr|ele),保留包含特定后代的元素,去掉那些不含有指定后代的元素。...“click”,function(event){ var username = $("#username").val(); //获取元素的值 if(username==""){ //判断值是否为空...该方法的作用是获取到光标相对于页面的x坐标和y坐标.如果没有使用jquery时,那么IE浏览器中 是使用event.pageX()和event.pageY()方法.如果页面上有滚动条,则还要加上滚动条的宽度和高...4.4 $.ajax  底层原始ajax请求方式  格式1:jQuery.ajax(url,[settings])  格式2:jQuery.ajax(settings);

    8.3K20

    jQuery动画与ajax

    在这种情况下,jQuery对象本身被默认为目标对象。这样,我们可以在jQuery的命名空间下添加新的功能。这对于插件开发者希望向 jQuery 中添加新函数时是很有用的。...Paste_Image.png 如果我们想保留原对象,我们可以通过传递一个空对象作为目标对象 var object = $.extend({}, object1, object2); 4: jQuery...5. jQuery AJAX中缓存怎样控制 当使用GET方法发送数据时,ajax的参数cache默认设置为true,将缓存页面;将cache设置为false,浏览器将不会缓存页面,每当发起ajax请求时...当使用POST方法时,则每次都会被认为是新的请求,不会缓存页面。...6. jQuery 中 data 函数的作用 作用:在匹配元素上存储任意相关数据, 或 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值。

    2.8K30

    JavaWeb04-jQuery(Java真正的全栈开发)

    属性的值 alert($obj.val()); 2.DOM对象和jQuery对象之间的转换 注意:jQuery对象使用jquery的api(方法、函数)。...username"); //alert(obj.value); //转换成jquery对象 var $obj = $(obj); //获得value的值 //alert($obj.val()); //2jquery...复合属性选择器 需要同时满足多个条件时使用 7.子元素过滤 :nth-child() 指定孩子 ,从1开始。...([val]) 获得 或 设置 水平滚动条的位置 6.尺寸 height([val]) 获得 或 设置 高度 width([val]) 获得 或 设置 宽度 五.文档处理 内部插入,外部插入,复制,替换...detach()将指定对象移除,返回值为移除对象。但此对象保留 绑定事件,绑定数据 等。 6.包裹 wrap(...) : 每一个匹配元素使用指定的内容包裹。 wrapAll(...)

    2.3K90

    JS使用lazyload进行图片懒加载

    原理: 图片的加载是由src引起的,当对src赋值时浏览器会请求图片资源,基于这个,可以利用html5的属性data-xxx来保存图片的路径,当我们需要加载图片的时候才将data-xxx的值赋予src...就能实现图片的按需加载了,也就是懒加载了 方法: 1.使用lazyload插件,引用jquery.js和jquery.lazyload.js 2.将img标签中的src属性赋值为加载图片,即一张临时的...loading.gif图,将真正的图片路径放在data-original属性中 3.当JS监听到该图片元素进入可视窗口时,将data-original属性中的地址存赋予到src属性中,达到懒加载的效果...('DOMContentLoaded', function() { //后端分页进行滚动加载 $(function () { var pageNo = 1, //页码...var scrollTop = Math.ceil($(this).scrollTop()); //滚动条与页面高度 //小数点原因 向上取整 var curHeight = $(this

    3K10

    JQuery中DOM对象

    JQuery中的DOM对象操作 1.查找节点 var li = (“ul li:eq(1)”); //查找元素 $li.attr(“title”);  //查找元素的属性值 2,创建和插入节点: var...var li = (“ul li”).detach(“li[title=hello]”); //和remove相同,不同之处:所有绑定的事件,附加的数据都会保留下来,将来可以再使用这些元素。...4,复制元素: $(“ul li”).click(function(){ $(this).clone(true).appendTo("ul"); //点击li时将li复制后追加到ul中,同时复制li所绑定的事件...$ul.css(“height”); //获取ul的高度,与样式的设置值有关,可能得到"auto" ,“10px” 之类的字符串。...$ul.scrollTop(300); //ul的滚动条滚动到距顶端300的位置。 $ul.scrollLeft(300); //ul的滚动条滚动到距左侧300的位置。

    4.9K20

    前端成神之路-02_jQuery

    (详情参考源代码) 1.2. jQuery 文本属性值 ​ jQuery的文本属性值常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText...1.2.1 jQuery内容文本值 ​ 常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性,主要针对元素的内容还有表单的值操作...) 3.修改普通元素的内容是text() 方法 4.注意2: 当前商品的价格,要把¥符号去掉再相乘 截取字符串 substr(1) 5.parents(‘选择器’) 可以返回指定祖先元素 6.最后计算的结果如果想要保留...// 页面滚动事件 var boxTop = $(".container").offset().top; $(window).scroll(function...3.触发的事件是页面滚动,因此这个功能要写到页面滚动事件里面。 4.需要用到each,遍历内容区域大模块。

    2.3K10

    WEB入门之十五 属性和样式

    在使用JavaScript对可简写的属性进行操作时,通常使用true和false作为属性的值。...我们同样也可以使用jQuery中的attr函数对可简写的属性进行操作,但是在使用attr函数对可简写的属性进行设置操作时没有问题,进行取值操作时会出现问题,例如下面的代码。...对于这个问题就可以使用prop来代替attr即可 在使用prop函数获取checked属性的值时,如果复选框处于未选中状态,那么返回false。...,鼠标悬浮/离开时边框颜色改变的样式 如果要使用css函数同时操作多个样式属性,那么可以参考示例6.5中的代码,语法归结如下所示:jQuery元素 . css ( { "属性名" : 属性值 , "属性名...scorllLeft和scrollTop函数用来获取滚动条的偏移位置。下面我们使用这三个函数实现一个跟随滚动条滚动的图片,参考代码如下所示。

    6010

    jQuery实现图片懒加载

    一、懒加载 1.什么是懒加载 目前,网络上各大论坛,尤其是一些图片类型的网站上,在图片加载时均采用了一种名为懒加载的方式,具体表现为,当页面被请求时,只加载可视区域的图片,其它部分的图片则不加载,只有这些图片出现在可视区域时才会动态加载这些图片...懒加载的原理就是先在页面中把所有的图片统一使用一张占位图进行占位,把正真的路径存在元素的自定义属性“data-src”(这个名字起个自己认识好记的就行)里,要用的时候就取出来,把它的值赋值给img的src...获取滚动条的滚动高度值:document.documentElement.scrollTop 获取滚动条的滚动高度值: document.body.scrollTop 获取滚动条的滚动宽度值: document.body.scrollLeft...2.当滚动页面时,检查页面所有的img标签,看看这个标签是否出现到我们的视野,当出现在我们的视野时 再去判断它是否已经加载过,如果没有加载,加载它 */...// 用户第一次打开页面,还未滚动窗口的时候需要执行一次 lazyRender lazyRender(); var clock;

    13.7K20

    zepto 基础知识(4)

    这是一个zepto的方法,不是jquery的api 67.removeAttr   removeAttr(name) 类型:slef   移除当前对象集中所有元素的属性。...包括元素本身) 70.serollLeft   scrollLeft() 类型:number   scrollLeft() 类型:self   获取或者设置页面上的滚动元素或者整个窗口向右滚动的像素值...71.scrollTop   scrollTop() 类型:number   scrollTop(value) 类型:self   获取或设置页面上的滚动元素或者整个长款向下滚动的像素值...类型;self     获取或者设置所有对象集合中元素的文本内容,当没有给定content参数时,返回当前对象集合中第一个元素的文本内容(包含子节点中的文本内容)当给定content     参数时,...79.unwrap   unwrap()    类型:self   移除集合中每个元素的直接父节点,并把他们的子元素保留在原来的位置,基本上,这种方法删除   上一的祖先元素

    776100

    JQuery-命令速查-CheatSheet

    filter 和 find 的区别 结论 submit a form in ajax success callback-AJAX 成功时回调函数中提交 Form API JQuery-Error...Checkbox 勾选所有 Checkbox 得到 checkbox 的值 选中某 Checkbox 的同时取消选择其他所有 jQuery: Uncheck other checkbox on...动态添加表单 获取 Jquery 对象数组中的所有文字 Jquery 对象的属性转为数组 Query select attributes into an array 页面控制 滚动到对应位置...prop() 得到 checkbox 的值 JS 方法 document.getElementById('viewDept').checked Jquery 方法 $('id').val() 得到多个值并用逗号分割...这是一个简单的 GET 请求功能以取代复杂 .ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 .ajax。 参数 Attr Exp url 必需。

    9.7K30

    WEB入门之十五 属性和样式

    在使用JavaScript对可简写的属性进行操作时,通常使用true和false作为属性的值。...对于这个问题就可以使用prop来代替attr即可 在使用prop函数获取checked属性的值时,如果复选框处于未选中状态,那么返回false。...,鼠标悬浮/离开时边框颜色改变的样式 如果要使用css函数同时操作多个样式属性,那么可以参考示例6.5中的代码,语法归结如下所示: jQuery元素 . css ( { "属性名" : 属性值 , "属性名...scorllLeft和scrollTop函数用来获取滚动条的偏移位置。下面我们使用这三个函数实现一个跟随滚动条滚动的图片,参考代码如下所示。...,通过简单计算即可实现跟随滚动条滚动的广告图片 如果需要通过offset函数设置元素的具体位置,可以参考上述代码中的最后一行,语法归结如下: jQuery元素 . offset ( { top : 值,

    9310

    JQuery iframe宽高度自适应浏览器窗口大小的解决方法

    需求场景1 实现需求:如下图,点击左侧的导航,打开对应tab页面,其中tab页面的内容为 iframe,这里希望iframe的高度和宽度,根据浏览器窗口大小变化而变化,同时页面内容过多,或者过宽时,出现...DOCTYPE html>文档类型声明,避免相关高度属性可能取不到值的情况 iframe代码片段1 <!...}); } 说明: window.innerHeight 获取浏览器窗口的高度-去掉浏览器地址栏,书签栏的可视区域的高度,包括横向滚动条的高度。...document.documentElement.clientHeight - 获取文档html根节点的高度,不包括横向滚动条的高度,其值等于window.innerHeight - 横向滚动条高度(如果有的话...JavaScript”,以上代码也可以使用JQuery的$(window).resize(function)等效实现。

    6.8K20

    防抖和节流 原

    )是要在1秒后执行handle 函数,小于1秒就不执行handle函数,但是timeout定时器已经不为空,第二次scroll滚动触发debounce时就执行clearTimeout(timeout),...每隔一定时间(如200ms)执行一次事件处理函数 先执行throttle(handle, 1000)返回一个匿名函数,然后触发scroll事件时执行返回的匿名函数,即未滚动的时候已经执行了throttle...,如果不放在里面会先执行此函数,导致没有值 debounceAjax(this.value) }) 如果是input的情况(节流)   <body...('keyup', function() { throttleAjax(this.value) }) 防抖和节流的区别: 防抖是根据事件间隔是否大于设定的值来决定回调函数是否执行...(取决于事件间隔,或者最后一次滚动); 节流是根据事件不停触发时时间间隔大于设定的值才执行回调函数(每隔多少秒执行一次); 公众号:前端之攻略 (adsbygoogle = window.adsbygoogle

    70540

    12个用得着的JQuery代码片段

    管理搜索框的值 现在各大网站都有搜索框,而搜索框通常都有默认值,当输入框获取焦点时,默认值消失。...而一旦输入框失去焦点,而输入框里又没有输入新的值,输入框里的值又会恢复成默认值,如果往输入框里输入了新值,则输入框的值为新输入的值。...})(jQuery); 8.克隆table header到表格的最下面 为了让table具有更好的可读性,我们可以将表格的header信息克隆一份到表格的底部,这种特效通过JQuery就很容易实现: var...width * ratio; } }); //$("#contentpage img").show(); // IMAGE RESIZE }); 12.滚动时动态加载页面内容...有些网站的网页内容不是一次性加载完毕的,而是在鼠标向下滚动时动态加载的,这是怎么做到的呢?

    1.2K50

    html左侧浮动广告代码,jQuery 浮动广告实现代码

    jquery,学了点皮毛,为了满足boss的需求弄了个相对屏幕静止的浮动层,把代码记在这里,以防自己以后用到 下面是jquery代码,需要jquery类库的支持才能运行,我写文章的时候jquery的版本是...$(document).ready(function(){ $(window).scroll( function() { //这个函数可以监视浏览器滚动条,只要滚动条一移动,此函数就触发 var diffY...= $(window).scrollTop();//页面现在的位置和滚动条顶端的距离[scrollTop()] var diffH = $(window).height()/4;//设计者期望的浮动栏与浏览器顶端的距离...[height()],这里是与浏览器顶端保持1/4个页面的高度,如果diffH的值设置成0,浮动栏就会落在屏幕顶端 var percent=diffY+diffH; //percent将被赋值给css中的...”top”属性,作为浮动栏的新高度值 if(percent的值是否小于0,小于0就凑整,大于0就忽略小数部分 percent=Math.ceil(percent); }else

    4.6K10

    06-移动端开发教程-fullpage框架

    CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js。...窗口缩放时自动调整。 可设置滚动宽度,背景颜色,滚动速度,循环选项,回调,文本对齐方式等。...字符串 #fff 左右滑块的箭头的背景颜色 loopBottom 布尔值 false 滚动到最底部后是否滚回顶部 loopTop 布尔值 false 滚动到最顶部后是否滚底部 loopHorizontal...布尔值 true 左右滑块是否循环滑动 autoScrolling 布尔值 true 是否使用插件的滚动方式,如果选择 false,则会出现浏览器自带的滚动条 scrollOverflow 布尔值 false...向左滚动 setAutoScrolling() 设置页面滚动方式,设置为 true 时自动滚动 setAllowScrolling() 添加或删除鼠标滚轮/触控板控制 setKeyboardScrolling

    5.1K50

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券