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> 展开
<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> 展开
3个回答
推荐于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.谢谢大神
展开全部
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,应该就是对应的标签数循环标记
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,应该就是对应的标签数循环标记
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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,应该就是对应的标签数循环标记
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,应该就是对应的标签数循环标记
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询