jQuery Tips 為AJAX回調(diào)函數(shù)傳遞額外參數(shù)的方法
更新時間:2010年12月28日 22:07:55 作者:
討論這個問題基于如下場景:點擊頁面上某個按鈕之后,觸發(fā)click事件,事件處理函數(shù)內(nèi)部發(fā)送一個AJAX請求,AJAX回調(diào)函數(shù)更新頁面的某一個部分。
具體到這個例子,我們希望button1和button2點擊之后,用AJAX的方式取example.html的內(nèi)容,然后動態(tài)更新頁面的id=callbackdemo3的div
HTML如下:
<div id="callbackdemo1">
<button id="button1">ajax load1</button><br/>
</div>
<div id="callbackdemo2">
<button id="button2">ajax load2</button><br/>
</div>
<div id="callbackdemo3" class="log"></div>
<button onclick="$('.log').html('');">clear</button>
第一種做法:
適用于最簡單的情況,也是比較直觀的做法,就是在ajax回調(diào)函數(shù)中,使用jQuery的id選擇器$(“#callbackdemo3″)得到id為callbackdemo3的div后更新其HTML內(nèi)容
$("#callbackdemo1>#button1").click(
function load(){
$.get("example.html",{ 'param[]': ["var1", "var2"] },
function f1(data, textStatus, XMLHttpRequest)
{
$("#callbackdemo3").html(data);
}
);
}
);
第二種做法:
定義好一個接受額外參數(shù)的回調(diào)函數(shù),然后在默認(rèn)回調(diào)函數(shù)的內(nèi)容調(diào)用這個預(yù)先定義好的回調(diào)函數(shù)
這樣就能達(dá)到傳遞額外參數(shù)的目的了,較之第一種方法,此方法能比較方便的利用各個回調(diào)函數(shù)的上下文。
function callback_with_extraParam(data,param)
{
param.html(data);
}
$("#callbackdemo2>#button2").click(
function load(){
var extraParam = $("#callbackdemo3")
$.get("example.html",{ 'param[]': ["var1", "var2"] },
function f2(data)
{
callback_with_extraParam(data,extraParam);
}
);
}
);
對于額外參數(shù)的重要性,不妨看一個稍微復(fù)雜一點點的HTML情況,我們希望更新button3下面的那個div的HTML,這個div沒有id,那么如何做呢?
<div id="callback_complexdemo">
<button id="button3">ajax load3</button><br/>
<button onclick="$('div',$(this).closest('div')).html('');">clear</button><br/>
<div></div>
</div>
當(dāng)然使用#callback_complexdemo>div也是可以的,但是如果是更加復(fù)雜的HTML頁面呢?如果沒有id=callback_complexdemo呢?嵌套很深呢?
這種情況下,我們就需要有效利用上下文參數(shù)這個特性了。
在click的事件處理函數(shù)load()中,我們可以方便的獲得當(dāng)前元素的位置var whereAmI = $(this);
這個whereAmI是個jQuery對象,然后在AJAX回調(diào)函數(shù)f3中,我們利用whereAmI即被點中的這個button想辦法去獲得想要的div
這一行代碼新手有的人看不懂:$('div',$(whereAmI).closest('div'))
首先$closest_parent_div = $(whereAmI).closest('div')即查詢獲得whereAmI最近的父div對象
然后$('div',$closest_parent_div) 即在最近的父div對象這個上下文中,查找內(nèi)部的div對象
$("#callback_complexdemo>#button3").click(
function load(){
var whereAmI = $(this);
$.get("example.html",{ 'param[]': ["var1", "var2"] },
function f3(data)
{
console.log(whereAmI);
$('div',$(whereAmI).closest('div')).html(data);
}
);
}
);
希望通過這個小例子,能讓大家學(xué)會如何給AJAX回調(diào)函數(shù)傳遞額外參數(shù),以及實用且重要的上下文參數(shù)。
HTML如下:
復(fù)制代碼 代碼如下:
<div id="callbackdemo1">
<button id="button1">ajax load1</button><br/>
</div>
<div id="callbackdemo2">
<button id="button2">ajax load2</button><br/>
</div>
<div id="callbackdemo3" class="log"></div>
<button onclick="$('.log').html('');">clear</button>
第一種做法:
適用于最簡單的情況,也是比較直觀的做法,就是在ajax回調(diào)函數(shù)中,使用jQuery的id選擇器$(“#callbackdemo3″)得到id為callbackdemo3的div后更新其HTML內(nèi)容
復(fù)制代碼 代碼如下:
$("#callbackdemo1>#button1").click(
function load(){
$.get("example.html",{ 'param[]': ["var1", "var2"] },
function f1(data, textStatus, XMLHttpRequest)
{
$("#callbackdemo3").html(data);
}
);
}
);
第二種做法:
定義好一個接受額外參數(shù)的回調(diào)函數(shù),然后在默認(rèn)回調(diào)函數(shù)的內(nèi)容調(diào)用這個預(yù)先定義好的回調(diào)函數(shù)
這樣就能達(dá)到傳遞額外參數(shù)的目的了,較之第一種方法,此方法能比較方便的利用各個回調(diào)函數(shù)的上下文。
復(fù)制代碼 代碼如下:
function callback_with_extraParam(data,param)
{
param.html(data);
}
$("#callbackdemo2>#button2").click(
function load(){
var extraParam = $("#callbackdemo3")
$.get("example.html",{ 'param[]': ["var1", "var2"] },
function f2(data)
{
callback_with_extraParam(data,extraParam);
}
);
}
);
對于額外參數(shù)的重要性,不妨看一個稍微復(fù)雜一點點的HTML情況,我們希望更新button3下面的那個div的HTML,這個div沒有id,那么如何做呢?
復(fù)制代碼 代碼如下:
<div id="callback_complexdemo">
<button id="button3">ajax load3</button><br/>
<button onclick="$('div',$(this).closest('div')).html('');">clear</button><br/>
<div></div>
</div>
當(dāng)然使用#callback_complexdemo>div也是可以的,但是如果是更加復(fù)雜的HTML頁面呢?如果沒有id=callback_complexdemo呢?嵌套很深呢?
這種情況下,我們就需要有效利用上下文參數(shù)這個特性了。
在click的事件處理函數(shù)load()中,我們可以方便的獲得當(dāng)前元素的位置var whereAmI = $(this);
這個whereAmI是個jQuery對象,然后在AJAX回調(diào)函數(shù)f3中,我們利用whereAmI即被點中的這個button想辦法去獲得想要的div
這一行代碼新手有的人看不懂:$('div',$(whereAmI).closest('div'))
首先$closest_parent_div = $(whereAmI).closest('div')即查詢獲得whereAmI最近的父div對象
然后$('div',$closest_parent_div) 即在最近的父div對象這個上下文中,查找內(nèi)部的div對象
復(fù)制代碼 代碼如下:
$("#callback_complexdemo>#button3").click(
function load(){
var whereAmI = $(this);
$.get("example.html",{ 'param[]': ["var1", "var2"] },
function f3(data)
{
console.log(whereAmI);
$('div',$(whereAmI).closest('div')).html(data);
}
);
}
);
希望通過這個小例子,能讓大家學(xué)會如何給AJAX回調(diào)函數(shù)傳遞額外參數(shù),以及實用且重要的上下文參數(shù)。
您可能感興趣的文章:
- jQuery Ajax Post 回調(diào)函數(shù)不執(zhí)行問題的解決方法
- Jquery版本導(dǎo)致Ajax不執(zhí)行success回調(diào)函數(shù)
- jquery ajax的success回調(diào)函數(shù)中實現(xiàn)按鈕置灰倒計時
- jQuery AJAX回調(diào)函數(shù)this指向問題
- jquery中的ajax如何返回結(jié)果而非回調(diào)方式即為同順序執(zhí)行
- 使用jQuery中的when實現(xiàn)多個AJAX請求對應(yīng)單個回調(diào)的例子分享
- jquery ajax 向后臺傳遞數(shù)組參數(shù)示例
- Jquery中ajax方法data參數(shù)的用法小結(jié)
- 淺析jQuery Ajax請求參數(shù)和返回數(shù)據(jù)的處理
- jQuery實現(xiàn)ajax回調(diào)函數(shù)帶入?yún)?shù)的方法示例
相關(guān)文章
jQuery創(chuàng)建自己的插件(自定義插件)的方法
在該系列之前的文章使用 jQuery:UI 項目中,我介紹了使用 jQuery 代碼中的插件來提高 web 應(yīng)用程序的效率。2010-06-06快速移動鼠標(biāo)觸發(fā)問題及解決方法(ECharts外部調(diào)用保存為圖片操作及工作流接線mouseenter和mouseleav
這篇文章主要介紹了快速移動鼠標(biāo)所觸發(fā)的問題及解決方法(ECharts外部調(diào)用保存為圖片操作及工作流接線mouseenter和mouseleave),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08jQuery中的CSS樣式屬性css()及width()系列大全
本文給大家分享jQuery的CSS樣式屬性css(),width()系列,offset()與position(),scrollLeft()與scrollTop()的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-08-08