jQuery Tips 为AJAX回调函数传递额外参数的方法


Posted in Javascript onDecember 28, 2010

具体到这个例子,我们希望button1和button2点击之后,用AJAX的方式取example.html的内容,然后动态更新页面的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回调函数中,使用jQuery的id选择器$(“#callbackdemo3″)得到id为callbackdemo3的div后更新其HTML内容
$("#callbackdemo1>#button1").click( 
function load(){ 
$.get("example.html",{ 'param[]': ["var1", "var2"] }, 
function f1(data, textStatus, XMLHttpRequest) 
{ 
$("#callbackdemo3").html(data); 
} 
); 
} 
);

第二种做法:
定义好一个接受额外参数的回调函数,然后在默认回调函数的内容调用这个预先定义好的回调函数
这样就能达到传递额外参数的目的了,较之第一种方法,此方法能比较方便的利用各个回调函数的上下文。
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); 
} 
); 
} 
);

对于额外参数的重要性,不妨看一个稍微复杂一点点的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>

当然使用#callback_complexdemo>div也是可以的,但是如果是更加复杂的HTML页面呢?如果没有id=callback_complexdemo呢?嵌套很深呢?
这种情况下,我们就需要有效利用上下文参数这个特性了。
在click的事件处理函数load()中,我们可以方便的获得当前元素的位置var whereAmI = $(this);
这个whereAmI是个jQuery对象,然后在AJAX回调函数f3中,我们利用whereAmI即被点中的这个button想办法去获得想要的div
这一行代码新手有的人看不懂:$('div',$(whereAmI).closest('div'))
首先$closest_parent_div = $(whereAmI).closest('div')即查询获得whereAmI最近的父div对象
然后$('div',$closest_parent_div) 即在最近的父div对象这个上下文中,查找内部的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); 
} 
); 
} 
);

希望通过这个小例子,能让大家学会如何给AJAX回调函数传递额外参数,以及实用且重要的上下文参数。
Javascript 相关文章推荐
js 事件小结 表格区别
Aug 13 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
Apr 01 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
AngularJS指令中的绑定策略实例分析
Dec 14 Javascript
浅析Vue实例以及生命周期
Aug 14 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
Nov 22 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 Javascript
Vue数组响应式操作及高阶函数使用代码详解
Aug 01 Javascript
JavaScript去掉空格的方法集合
Dec 28 #Javascript
js常用排序实现代码
Dec 28 #Javascript
深入理解Javascript闭包 新手版
Dec 28 #Javascript
prettify 代码高亮着色器google出品
Dec 28 #Javascript
Pro JavaScript Techniques学习笔记
Dec 28 #Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
Dec 28 #Javascript
JavaScript动态调整TextArea高度的代码
Dec 28 #Javascript
You might like
博士208HAF收音机实习报告
2021/03/02 无线电
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
PHP 各种排序算法实现代码
2009/08/20 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
python实现简单遗传算法
2018/03/19 Python
python 接收处理外带的参数方法
2018/12/03 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
2014年作风建设工作总结
2014/10/29 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript