无需申请自动送彩金68_白菜送彩金网站大全[无需申请秒送彩金]
做最好的网站
来自 无需申请自动 2019-07-10 23:52 的文章
当前位置: 无需申请自动送彩金68 > 无需申请自动 > 正文

jQuery中数据缓存,一个用jquery写的判断div滚动条

jQuery 里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop、scrollLeft、scrollHeight。其中 scrollHeight 属性,互联网上几乎搜素不到关于它的应用技巧,而我正好需要用到它。

一、实现原理:

实例一、比较简单粗暴缺少点类型判断

我们现在只探讨和垂直滚动有关的 scrollTop、scrollHeight 属性。

对于DOM元素,通过分配一个唯一的关联id把DOM元素和该DOM元素的数据缓存对象关联起来,关联id被附加到以jQuery.expando的值命名的属性上,数据存储在全局缓存对象jQuery.cache中。在读取、设置、移除数据时,将通过关联id从全局缓存对象jQuery.cache中找到关联的数据缓存对象,然后在数据缓存对象上执行读取、设置、移除操作。

<script type="text/javascript"> 

        var sUserAgent = navigator.userAgent.toLowerCase(); 
        var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; 
        var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; 
        var bIsMidp = sUserAgent.match(/midp/i) == "midp"; 
        var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; 
        var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"; 
        var bIsAndroid = sUserAgent.match(/android/i) == "android"; 
        var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; 
        var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; 
        if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM ){ 
          window.location.href="3g.php";
        } 


</script>

一、滚动条有关属性的正确理解:

对于Javascript对象,数据则直接存储在该Javascript对象的属性jQuery.expando上。在读取、设置、移除数据时,实际上是对Javascript对象的数据缓存对象执行读取、设置、移除操作。

实例二、代码工整,很多的函数都基于这个增加的功能

假设有以下Html代码:

为了避免jQuery内部使用的数据和用户自定义的数据发生冲突,数据缓存模块把内部数据存储在数据缓存对象上,把自定义数据存储在数据缓存对象的属性data上。

<script>
 var pc_style = ""
 var browser = {
 versions: function () {
 var u = navigator.userAgent, app = navigator.appVersion;
 return {
 trident: u.indexOf('Trident') > -1,
 presto: u.indexOf('Presto') > -1,
 webKit: u.indexOf('AppleWebKit') > -1,
 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,
 mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/) && u.indexOf('QIHU') && u.indexOf('QIHU') > -1 && u.indexOf('Chrome') < 0,
 ios: !!u.match(/(i[^;] ;( U;)? CPU. Mac OS X/),
 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1,
 iPad: u.indexOf('iPad') > -1,
 webApp: u.indexOf('Safari') == -1,
 ua: u
 };
 }(),
 language: (navigator.browserLanguage || navigator.language).toLowerCase()
 }

 if (browser.versions.mobile && !browser.versions.iPad) {
 this.location = "此处输入跳转微站首页地址";
 }
</script>
<div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
  <div style="height:750px;">
  </div>
</div>

二、总体结构:

实例三、增加了一些功能

由于内部的div标签高度比外部的长,并且外部的div允许自动出现垂直滚动条,所以用浏览器打开后,可以看到垂直滚动条。滚动条向下拖动一段距离,看到的页面效果如下(右部的a、b是我抓图后,用PS标出来的):

// 数据缓存 Data
jQuery.extend({
   // 全局缓存对象
   cache: {},
   // 唯一 id种子
   uuid:0,
   // 页面中每个jQuery副本的唯一标识
   expando: "jQuery"   ( jQuery.fn.jquery   Math.random() ).replace( /D/g, "" ),
   // 是否有关联的数据
   hasData: function(){},
   // 设置、读取自定数据或内部数据
   data: function(elem, name, data, pvt) {},
   // 移除自定义数据或内部数据
   removeData: function(elem, name, pvt) {},
   // 设置、读取内部数据
   _data: function(elem, name, data) {},
   // 是否可以设置数据
   acceptData: function(elem){}
});
jQuery.fn.extend({
   // 设置、读取自定义数据,解析HTML5属性data-
   data: function(key,value){},
   // 移除自定义数据
   removeData: function(key){}
});
// 解析HTML5属性 data-
function dataAttr(elem,key,data){}
// 检查数据缓存对象是否为空
function isEmptyDataObject(obj){}
jQuery.extend({
   // 清空数据缓存对象


cleanData: function(elems){}
});
<!--智能手机判断开始-->
<!--
  <script type = "text/javascript" language = "javascript" >
 Function.prototype.bind = function (bindObj, args) {
 var _self = this;
 return function () {
  return _self.apply(bindObj, [].concat(args))
 }
};
function $(id) {
 return "string" == typeof id ? document.getElementById(id) : id;
};

var browser = {
 versions : function () {
  var u = navigator.userAgent,
  app = navigator.appVersion;
  return {
   trident : u.indexOf('Trident') > -1,
   presto : u.indexOf('Presto') > -1,
   webKit : u.indexOf('AppleWebKit') > -1,
   gecko : u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,
   mobile : !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/),
   ios : !!u.match(/(i[^;] ;( U;)? CPU. Mac OS X/),
   android : u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
   iPhone : u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1,
   iPad : u.indexOf('iPad') > -1,
   webApp : u.indexOf('Safari') == -1,
   QQbrw : u.indexOf('MQQBrowser') > -1,
   ucLowEnd : u.indexOf('UCWEB7.') > -1,
   ucSpecial : u.indexOf('rv:1.2.3.4') > -1,
   ucweb : function () {
    try {
     return parseFloat(u.match(/ucwebd .d /gi).toString().match(/d .d /).toString()) >= 8.2
    } catch (e) {
     if (u.indexOf('UC') > -1) {
      return true;
     } else {
      return false;
     }
    }
   }
   (),
   Symbian : u.indexOf('Symbian') > -1,
   ucSB : u.indexOf('Firefox/1.') > -1
  };
 }
 ()
}
var _gaq = _gaq || [];
(function (win, browser, undefined) {
 var rf = document.referrer;
 if (rf === "" || rf.toLocaleLowerCase().indexOf(".xiu.com") === -1) {
  var defaultJumpDomain = "";
  if (defaultJumpDomain == "www") {
   return;
  }
  if (defaultJumpDomain == "m") {
   window.location.href = "http://wap.xiu.com/?from=pc";
   return;
  }
  if (screen == undefined || screen.width < 810) {
   if (browser.versions.iPad == true) {
    return;
   }
   if (browser.versions.webKit == true || browser.versions.mobile == true || browser.versions.ios == true || browser.versions.iPhone == true || browser.versions.ucweb == true || browser.versions.ucSpecial == true) {
    win.location.href = "http://wap.xiu.com/?from=pc";
    return;
   }
   if (browser.versions.Symbian) {
    win.location.href = "http://wap.xiu.com/";
   }
  }
 }
})(window, browser);

 </script>
-->
<!--智能手机判断结束-->

图片 1

三、$.data(elem, name, data), $.data(elem, name) $.data(elem, name, data)的使用方法:
如果传入参数name, data, 则设置任意类型的数据

实例四、简洁脚本之家推荐使用,如果您有更好的代码可以分享

那么,这里的外部div 的scrollTop、scrollHeight 属性到底是什么呢?

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>jQuery.data demo</title>
 <style>
 div {
  color: blue;
 }
 span {
  color: red;
 }
 </style>
 <script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<div>
 The values stored were

 and

</div>

<script>
var div = $( "div" )[ 0 ];
jQuery.data( div, "test", {
 first: 16,
 last: "pizza!"
});
$( "span:first" ).text( jQuery.data( div, "test" ).first );
$( "span:last" ).text( jQuery.data( div, "test" ).last );
</script>

</body>
</html>
<script type="text/javascript">
var browser = {
 versions : function () {
  var u = navigator.userAgent,
  app = navigator.appVersion;
  return {
   trident : u.indexOf('Trident') > -1,
   presto : u.indexOf('Presto') > -1,
   webKit : u.indexOf('AppleWebKit') > -1,
   gecko : u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,
   mobile : !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/),
   ios : !!u.match(/(i[^;] ;( U;)? CPU. Mac OS X/),
   android : u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
   iPhone : u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1,
   iPad : u.indexOf('iPad') > -1,
   webApp : u.indexOf('Safari') == -1,
   QQbrw : u.indexOf('MQQBrowser') > -1,
   weiXin : u.indexOf('MicroMessenger') > -1,
   ucLowEnd : u.indexOf('UCWEB7.') > -1,
   ucSpecial : u.indexOf('rv:1.2.3.4') > -1,
   ucweb : function () {
    try {
     return parseFloat(u.match(/ucwebd .d /gi).toString().match(/d .d /).toString()) >= 8.2
    } catch (e) {
     if (u.indexOf('UC') > -1) {
      return true;
     } else {
      return false;
     }
    }
   }
   (),
   Symbian : u.indexOf('Symbian') > -1,
   ucSB : u.indexOf('Firefox/1.') > -1
  };
 }
 (),
 liulanqi : navigator.userAgent
}
if (browser.versions.QQbrw){
document.write("qq浏览器");
}else
{
document.write("其它浏览器" browser.liulanqi);
}
</script>

有人说,scrollTop等于图中标出的a。scrollHeight 等于外部div的高度500px。其实,都不对。

$.data(elem, name)的使用方法:
如果传入key, 未传入参数data, 则读取并返回指定名称的数据

您可能感兴趣的文章:

  • JSP中实现判断客户端手机类型并跳转到app下载页面
  • Javascript 判断客户端浏览器类型代码
  • Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
  • js获取客户端操作系统类型的方法【测试可用】
  • JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
  • Javascript实现检测客户端类型代码封包
  • 利用JS判断客户端类型你应该知道的四种方法

本文由无需申请自动送彩金68发布于无需申请自动,转载请注明出处:jQuery中数据缓存,一个用jquery写的判断div滚动条

关键词: