Javascript中的addClass用法问题

下面是段很简单的代码,执行addClass的时候形参"n"到底干了什么,为什么会是0,1两个变量?不懂这个参数的传递机制啊,怒求大神回答啊<script>/*这里是jav... 下面是段很简单的代码,执行addClass的时候形参"n"到底干了什么,为什么会是0,1两个变量?不懂这个参数的传递机制啊,怒求大神回答啊
<script> /*这里是javascript*/
$(document).ready(function(){
$("button").click(function(){
$('p').addClass(function(n){
return 'par_' + n;
});
});
});
</script>
<style > /*这里是css*/
.par_0
{
color:blue;
}
.par_1
{
color:red;
}
</style>
</head>

<body> /*这里是body*/
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>向 p 元素添加类</button>
</body>
展开
 我来答
匿名用户
推荐于2016-09-13
展开全部
addClass:function(a){
if(c.isFunction(a))
return this.each(function(r){
var y=c(this);
y.addClass(a.call(this,r,y.attr("class")))
});
if(a&&typeof a==="string")for(var b=(a||"").split(sa),
e=0,
g=this.length;e<g;e++){
var f=this[e];
if(f.nodeType===1)if(f.className){for(var l=" "+f.className+" ",
k=f.className,s=0,m=b.length;s<m;s++)
if(l.indexOf(" "+b[s]+" ")<0)k+=" "+b[s];
f.className=c.trim(k)}else f.className=a}return this}

这是jQuery中addclass的函数部分,里面定义了传function就会执行传过来的函数,里面有个e=0;是循环的开始数,比如你给多个class名称的标签加class那就会去遍历寻找每一个标签添加class,你那里面的n,应该就是对应的标签数循环标记

追问
哦,也就是说jquery内置了循环计数的代码啊,我就说没有循环怎么会凭空出现0,1.谢谢大神
郭某人来此
2015-10-06 · TA获得超过1646个赞
知道答主
回答量:952
采纳率:100%
帮助的人:90.9万
展开全部
addClass:function(a){
if(c.isFunction(a))
return this.each(function(r){
var y=c(this);
y.addClass(a.call(this,r,y.attr("class")))
});
if(a&&typeof a==="string")for(var b=(a||"").split(sa),
e=0,
g=this.length;e<g;e++){
var f=this[e];
if(f.nodeType===1)if(f.className){for(var l=" "+f.className+" ",
k=f.className,s=0,m=b.length;s<m;s++)
if(l.indexOf(" "+b[s]+" ")<0)k+=" "+b[s];
f.className=c.trim(k)}else f.className=a}return this}
这是jQuery中addclass的函数部分,里面定义了传function就会执行传过来的函数,里面有个e=0;是循环的开始数,比如你给多个class名称的标签加class那就会去遍历寻找每一个标签添加class,你那里面的n,应该就是对应的标签数循环标记
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奔跑吧疯男人
推荐于2018-04-07 · TA获得超过597个赞
知道答主
回答量:302
采纳率:100%
帮助的人:31.8万
展开全部
1.addClass:function(a){
2.if(c.isFunction(a))
3.return this.each(function(r){
4.var y=c(this);
5.y.addClass(a.call(this,r,y.attr("class")))
});
6.if(a&&typeof a==="string")for(var b=(a||"").split(sa),
e=0,
g=this.length;e<g;e++){
var f=this[e];
7.if(f.nodeType===1)if(f.className){for(var l=" "+f.className+" ",
k=f.className,s=0,m=b.length;s<m;s++)
if(l.indexOf(" "+b[s]+" ")<0)k+=" "+b[s];
f.className=c.trim(k)}else f.className=a}return this}

8.这是jQuery中addclass的函数部分,里面定义了传function就会执行传过来的函数,里面有个e=0;是循环的开始数,比如你给多个class名称的标签加class那就会去遍历寻找每一个标签添加class,你那里面的n,应该就是对应的标签数循环标记
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式