jquery源碼解讀
⑴ 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
]
)
⑵ JQuery的源碼看過嗎能不能簡單說一下它的實現原理
沒別的,就是封裝javascript,使調用更簡單而已。
⑶ jQuery源碼分析之實例find和filter方法的區別七問
filter()過濾DOM元素包裝集,是指操作當前元素集,刪除不匹配的元素,得到一個新的集合
$('div').filter('.div1');//選擇div標簽中class屬性為div1的div元素
find()在當前選中元素的上下文中找到符合條件的後代,返回的是子元素
$('div').find('em');//選擇div標簽中的em標簽的元素
filter()是對選中的元素集合操作,得到這些元素中符合條件的元素,而find()是得到選中元素 中符合條件的後代子元素。
⑷ 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框架必須知道的知識,它可以幫助我們隱藏我們的臨時變數,降低污染。
⑸ jquery源碼經過哪幾個判斷分支後實現對a的賦值
Jquery為a標簽的href賦值實現思路如下:先獲取選中項的值在使用attr屬性為href賦值,有類似需求的朋友可以參考下哈,希望可以幫助到你
<script type="text/javascript">
function doTest(){
var value = $("input[name='di'][type='radio']:checked").val();//獲得選中項的值
$('#a1').attr('href','shoppeisong.php?addid='+value+'');
}
</script>
⑹ 簡單易懂的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>
效果圖:
⑺ jQuery(function($){...})中的 「$」 是什麼意思
實際上,jquery只是js寫出來的對象,或者稱工廠(產生新的對象)
jquery源碼中的定義可以理解為 var jQuery = $ = function($){ } (jQuery)
即,function參數為形參,function後的括弧內的內容為實參,實參賦值給形參
在你給出的例子中,可以斷言肯定已經引入了jquery,故其實$已經被賦值為jQuery對象,因此這個函數是將jquery作為參數傳進函數內部,作為jquery的代名詞。
可能你要問為什麼要這么做,直接用$不是很好么?這有一種可能是不止引入了jquery,還引入了prototype(也是使用$作為工廠符號)之類的,為防混淆如此做。
這樣做其實是因為js編程中的封裝,防止變數污染其他作用域,使得$只作用於這個函數。
但我感覺這樣寫的不是很好,如果換成
jQuery(function(jQuery){
var$=jQuery;
//alert($);
varindex=0;
varmaximg=5;
……
}
這樣會更好點,也更好理解。
可能我語言組織的不是很好,見諒一下,建議去參考《javascript 高級程序設計》
⑻ 急 求jquery完整視頻教程
Jquery視頻教程.zip網路網盤資源免費下載
鏈接:https://pan..com/s/1nIebXgAcvf8wuTWwXXyhrw
⑼ jQuery源碼中的「new jQuery.fn.init」什麼意思
就是初始化的。
從return new jQuery.fn.init( selector, context, rootjQuery )中可以看出
參數selector和context是來自我們在調用jQuery方法時傳過來的.