为了账号安全,请及时绑定邮箱和手机立即绑定

关于函数参数调用问题,求教

关于函数参数调用问题,求教

猫的第九尾 2015-12-07 17:50:49
<html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){   $("button").click(function(){     $('p').addClass(function(n){       return 'par_' + n;     });   }); }); </script> <style type="text/css"> .par_0 { color:blue; } .par_1 { color:red; } </style> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> <p>This is another paragraph.</p> <button>向 p 元素添加类</button> </body> </html>明明没有传入n,为什么n会自动为0 和1呢,两个p标签的颜色也被改了。
查看完整描述

2 回答

已采纳
?
闹小志

TA贡献75条经验 获得超42个赞

我也是第一次见过这样的,木有传参数,于是进行了一些猜想:

1、在调试中给return 'par_' + n;这句打了断点,并且在这句之前输出了n,最后结果是0,1,且p标签按序加上了class

2、我把要后加上的class名称从par_0,par_1,改成了par_2,par_3, 结果是p标签均没有变化。

总结:也就是说,你的par_0和par_1只是恰好和p标签的索引相同而已,即,第0个p标签和第1个p标签,所以改成3和4的时候就没有反应了。

以上是我的猜想,为了证明猜想,去w3c上看了看,果然addClass方法中时可以写成函数形式的:

$(selector).addClass(function(index,oldclass))

index代表的是函数的索引,oldclass是之前的类名,两个参数均为可选,可写可不写,你的问题中就是只写了一个参数,按照顺序,这个参数是索引,所以实际上你没有给传参数,可是它自己已经得到了哦~

查看完整回答
反对 回复 2015-12-07
?
echo_kinchao

TA贡献600条经验 获得超86个赞

你试试给N 初始化看看

查看完整回答
反对 回复 2015-12-07
  • 2 回答
  • 0 关注
  • 1209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信