问答详情
源自:3-4 jQuery的属性与样式之增加样式.addClass()

这个函数的问题

$('div').addClass(function(index,className){

    if(-1 !== className.indexOf('imooc')){
                //this指向匹配元素集合中的当前元素
                $(this).addClass('imoocClass')
            }

})

这里indexOf代表的是imooc首次出现的位置!那么其中形参index  className是什么意思?还有className.indexOf()这里面的className是指$('div')这个对象集中的所有className的值的集合吗?  注释中还说this指当前元素,我的理解是第一次出现imooc的元素,同时给这个元素添加一个类名  可是效果为什么会有两个背景色为红色的盒子?

提问者:街角疯 2017-09-11 15:23

个回答

  • 枫叶咚咚咚
    2017-09-19 12:06:21

    选择器$('div')是获取到所有div标签对象,然后对每个标签对象执行.addClass(function(index,className){……}),也就是查看每个div标签的className是否包含'imooc',如果包含,就再为这个标签增加一个值为'imoocClass'的新className。$(this)在这里是当前正在查看的div标签。

  • summerwhite005
    2017-09-12 14:14:00

      if(-1 !== className.indexOf('imooc'))意思是找到class名中有  imooc的,均给该元素添加新类 imoocClass,

    并不是第一imooc出现  而是所有含有imooc。如果出现两个 ,说明你的html中有两个元素均有imooc的class名