jquery源码分析
A. 完全理解jQuery源代码,在前端行业算什么水平
依读了2周jQuery源码的人感觉来说,完全理解jQuery,就拿jQuery 1.11这个版本10337行代码来说,水平已经很不错了。谦虚点说,已经入门。骄傲点,国内领先水平。但其码我感觉是js架构之路起行的第一步,完全理解源码,说明有独立构建或组织大型web前端框架的能力和基础。然后看看完全理解jQuery是一个怎么样的状态。
看下面几个链接就明白了:
RubyLouvre/avalon · GitHub
artDialog
aui/artDialog · GitHub(后来的新版代码有所改变)
没错,这两个里边,就是在继承jquery的基础上做了自己的创新尝试。
然后在看下面这位:
[原创] jQuery1.6.1源码分析系列(停止更新)
是唯一出过jquery源码分析书的一位:
《jQuery技术内幕:深入解析jQuery架构设计与实现原理》(高云)【摘要 书评 试读】
然后在看这位:
jQuery 2.0.3 源码分析系列
是目前一直在更新的一位,通俗有深度且版本比较新。
在说一下我2周阅读jquery源码的心得,初看源码写的恶心,再看写的不错,细看写的真是精妙。然后今天在看ext 4.2的源码,真是流畅易读。基本来说,看懂jQuery源码,以后的源码学习之路可以说,平坦。
然后说是不是高手,高手只是一个自我定位的心理暗示,是一种人格魅力的体现,是业务与技术的完美结合。个人感觉只能无限的接近,不能在有限的生命里边到达。我们在通往目的地过程中享受一路的风景,这才是生命的意义。
然后在说前端,前端的核心是js,外围打酱油的技术太多,不一一列举。
css就像一瓶酒,得品。
html,css总共就那些标签跟选择器属性什么的,但是要写一个有扩展性,健壮性或维护性的页面不容易。现在写页面基本条件反射,不是如何快速的完成,而是思考如果有前端界面需求修改,怎么在修改代码最少的情况下完成整体需求任务。
js就像一把剑,得磨。
js刚开始只是为了较验,随便技术社会的发展,承担的角色越来越重,刚开始玩玩jQuery感觉已经会js了,其实只是冰山一角。随着对js的了解越来越多,他即变态又可爱,即好玩又难控,即有很多兼容问题,但解决兼容是我们基本生存之道。
人生就是一场梦,得作。
技术只是生活的一部分,曾经雄心斗志,如今低头写码。改变能改变的,接受不能改变的。人生有限,兄争朝夕啊。
最后说,什么时候能阅读jQuery源码,我感觉其码是纯js编码一年以上,js基础知识没有盲点。阅读源码,确实能学到很多东西。不只是技术,而是一种生活的态度。一种把一件事情做到极致的态度
B. 如何查看网页jquery源代码
右击页面,点击“查看元素”或“查看源码”就可以查案网页的html
一般<script>juqery代码</script>标签包裹的就是写在页面上的jQuery代码
另外还有写在jQuery文件在页面通过<script src="jquery文件地址"></script>这里的地址一般是相对地址,找到相应的地址打开文件就可以了
C. jQuery实现的导航动画效果(附demo源码)
本文实例讲述了jQuery实现的导航动画效果。分享给大家供大家参考,具体如下:
经常在网上看到的,鼠标在导航上移动时,导航底部的横条会自动移动到鼠标悬浮的导航项上。
效果如下图:
利用jquery的
animate
函数,很好实现。代码很简单!
代码如下:
<!DOCTYPE
html>
<html>
<head>
<meta
charset="utf-8">
<title>测试</title>
<script
src="jquery-1.9.1.min.js"></script>
</head>
<body>
<div
class="nav"
style="margin:
100px
auto;
width:960px;">
<a
class="active"
href="#">首页</a>
<a
href="#">产品</a>
<a
href="#">新闻中心</a>
<a
href="#">关于我们</a>
<a
href="#">联系我们</a>
<a
href="#">首页</a>
<a
href="#">首页</a>
<div
class="line"></div>
</div>
<style>
.nav{
position:relative;
}
.nav
a{
padding:10px
20px;
border-bottom:solid
3px
#fff;
text-decoration:
none;
color:#666;
}
.nav
a:hover{
color:#66f;
}
.nav
.active,
.nav
.active:hover{
color:#f33;
}
.nav
.line{
position:absolute;
border-top:solid
2px
red;
width:0;
left:0;
top:0;
}
</style>
<script>
function
navLine(o,
bo)
{
var
x
=
''
+
(o.position().top
+
o.outerHeight()
-
2)
+
'px';
var
y
=
''
+
o.position().left
+
'px';
var
w
=
''
+
o.outerWidth()
+
'px';
var
h
=
'2px';
$('.nav
.line').stop();
if
(bo)
{
$('.nav
.line').css({width:w,
height:h,
top:x,
left:y});
}
else
{
$('.nav
.line').animate({width:w,
height:h,
top:x,
left:y});
}
}
$(function(){
navLine($('.nav
.active'),
true);
$('.nav
a').hover(function(){
navLine($(this));
},
function(){
navLine($('.nav
.active'));
});
});
</script>
</body>
</html>
完整实例代码点击此处本站下载。
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》、《jquery选择器用法总结》及《jQuery常用插件及用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
D. jquery each()源代码
复制代码
代码如下:
//
args
is
for
internal
usage
only
each:
function(
object,
callback,
args
)
{
var
name,
i
=
0,
length
=
object.length,
isObj
=
length
===
undefined
||
jQuery.isFunction(object);
if
(
args
)
{
if
(
isObj
)
{
for
(
name
in
object
)
{
if
(
callback.apply(
object[
name
],
args
)
===
false
)
{
break;
}
}
}
else
{
for
(
;
i
<
length;
)
{
if
(
callback.apply(
object[
i++
],
args
)
===
false
)
{
break;
}
}
}
//
A
special,
fast,
case
for
the
most
common
use
of
each
}
else
{
if
(
isObj
)
{
for
(
name
in
object
)
{
if
(
callback.call(
object[
name
],
name,
object[
name
]
)
===
false
)
{
break;
}
}
}
else
{
for
(
var
value
=
object[0];
i
<
length
&&
callback.call(
value,
i,
value
)
!==
false;
value
=
object[++i]
)
{}
}
}
return
object;
},
分析:jquery文档说
each(callback)作用是以每一个匹配的元素作为上下文来执行一个函数。就是用each来遍历数组,来执行同一个方法
这个方法的实现最关键的是:call与apply的用法:call(apply)就是将函数的对象的从初始的上下文改为thisObj指向的对象,
就是说用thisObj来代替原来的对象来执行方法:call与apply的第一个参数为this指向的对象,而后面的参数都下传给函数的,
call传给函数的参数用逗号分隔而apply则为一个数组。
//1.callback.apply(
object[
name
],
args
)
//2.callback.call(
object[
name
],
name,
object[
name
]
)
E. jquery的源码看过吗能不能简单概况一下它的实现原理
原理就是对常用操作的封装,顺便解决了兼容性问题
F. jQuery 是如何判断HTML页面加载完毕的它的原理是什么
jquery是一个轻量级的JS框架,这点相信大部分人都听过,而jquery之所以有这样一个称呼,就是因为它悄悄披了一件外衣,将自己给隐藏了起来。
//以下截取自jquery源码片段(function( window, undefined ) { /* 源码内容 */})( window );
上面这一小段代码来自于1.9.0当中jquery的源码,它是一个无污染的JS插件的标准写法,专业名词叫闭包。可以把它简单的看做是一个函数,与普通函数不同的是,这个函数没有名字,而且会立即执行,就像下面这样,会直接弹出字符串。
(function( window, undefined ) {
alert("Hello World!");
})( window );
可以看出来这样写的直接效果,就相当于我们直接弹出一个字符串。但是不同的是,我们将里面的变量变成了局域变量,这不仅可以提高运行速度,更重要的是我们在引用jquery的JS文件时,不会因为jquery当中的变量太多,而与其它的JS框架的变量命名产生冲突。对于这一点,我们拿以下这一小段代码来说明。
var temp = "Hello World!";
(function( window, undefined ) { var temp = "ByeBye World!";
})( window );
alert(temp);
这段代码的运行结果是Hello而不是ByeBye,也就是说闭包中的变量声明没有污染到外面的全局变量,倘若我们去掉闭包,则最终的结果会是ByeBye,就像下面这样。
var temp = "Hello World!";// (function( window, undefined ) {
var temp = "ByeBye World!";// })( window );
alert(temp);
由此就可以看出来,jquery的外衣就是这一层闭包,它是很重要的一个内容,是编写JS框架必须知道的知识,它可以帮助我们隐藏我们的临时变量,降低污染。
G. jQuery 源代码看不懂,怎么办。。有没有解释jQuery 源代码的书籍
建议去找原码看,一般网上下载下来都是经过压缩的。
H. 简述一下jQuery的运用了什么设计思想
设计思想,你指的是设计模式吧
一般的JS框架,都应该具备DOM,AJAX,Event,Plugin这几种机制,
Dom的增删改,CSS的控制,animate.
AJAX的post,get,都应具备
Event事件的处理,包括load,click等
Plugin插件机制,这在一些框架里面必须要有的.
至于设计模式,就不jquery而言,其他框架比如extjs,mootools,prototype等,都应该具备,继承,多态,接口,工厂,观察者,调用链等.
另外多浏览器支持,
话说,一种框架有一种框架的特色,你如果想探究的话,还是阅读源码分析比较好.
I. 简单易懂的jQuery导航(三级菜单)源码
<!--三级操蛋导航-->
<divclass="nav_left">
<divclass="nav_leftlist">
<h2><b></b>用户系统</h2>
<dl>
<dt><b></b>用户管理</dt>
<dd>
<aclass="cur"href="">商户信息<b></b></a>
<ahref="">用户信息<b></b></a>
</dd>
</dl>
</div>
<divclass="nav_leftlist">
<h2><b></b>财务系统</h2>
<dl>
<dt><b></b>系统账务</dt>
<dd>
<ahref="">平台账单<b></b></a>
<ahref="">账单明细<b></b></a>
</dd>
</dl>
<dl>
<dt><b></b>商户账务</dt>
<dd>
<ahref="">商户账单<b></b></a>
<ahref="">提现管理<b></b></a>
</dd>
</dl>
<dl>
<dt><b></b>用户账务</dt>
<dd>
<ahref="">用户账单<b></b></a>
<ahref="">提现管理<b></b></a>
</dd>
</dl>
</div>
</div>
<style>
.nav_left{background:#232b35;height:100%;width:220px;min-height:600px;position:fixed;top:100px;left:0;}
.nav_leftlist{}
.nav_leftlisth2{height:50px;line-height:50px;padding-left:40px;font-size:16px;background:#3b444f;color:#999999;position:relative;cursor:pointer;}
.nav_leftlisth2b{position:absolute;top:20px;left:13px;width:16px;height:9px;background:url(../images/icon04.png)no-repeat;background-position:00;cursor:pointer;}
.nav_leftlisth2b.cur{background-position:-16px0;}
.nav_leftlistdl{}
.nav_leftlistdldt{height:50px;line-height:50px;background:#2c3643;font-size:16px;color:#ffffff;padding-left:60px;position:relative;cursor:pointer;}
.nav_leftlistdldtb{position:absolute;top:20px;left:34px;width:16px;height:9px;background:url(../images/icon04.png)no-repeat;background-position:0-10px;}
.nav_leftlistdldtb.cur{background-position:-16px-10px;}
.nav_leftlistdldd{}
.nav_leftlistdldda{display:block;height:50px;line-height:50px;color:#fff;padding-left:80px;font-size:16px;position:relative;}
.nav_leftlistdldda.cur{color:#ee581c;}
.nav_leftlistdldda.curb{display:block;position:absolute;top:16px;right:-1px;width:11px;height:18px;background:url(../images/icon04.png)no-repeat;background-position:0-20px;}
</style>
</body>
<scripttype="text/javascript"src="../js/jquery.js"></script>
<scripttype="text/javascript">
$(function(){
$('.nav_leftlist').on('click','h2',function(event){
$(this).siblings('dl').toggle();
if($(this).siblings('dl').css('display')=='none'){
$(this).find('b').addClass('cur');
}else{
$(this).find('b').removeClass('cur');
}
});
$('.nav_leftlist').on('click','dldt',function(event){
$(this).siblings('dd').toggle();
if($(this).siblings('dd').css('display')=='none'){
$(this).find('b').addClass('cur');
}else{
$(this).find('b').removeClass('cur');
}
});
})
</script>
效果图:
J. 急 求jquery完整视频教程
Jquery视频教程.zip网络网盘资源免费下载
链接:https://pan..com/s/1nIebXgAcvf8wuTWwXXyhrw