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

关于addClass() 里面function的参数问题

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

            if(-1 !== className.indexOf('imooc')){

                $(this).addClass('imoocClass')

            }

});

function的参数:index和className好像后面都没有出现,那还要参数干嘛?

还有这句className.indexOf('imooc')

className都不是一个对象,怎么可以怎么用?

不是应该先定义变量么? className=$('div')[i].className 然后再用for循环遍历一下么?

提问者:星星3394050 2016-08-27 13:38

个回答

  • qq_梦里_0
    2016-08-31 15:03:29
    已采纳

    $("div").addClass(function(index,className)这句话里面的index只是索引,根据前面的div来取值0,1,2....className是div以前的类名。w3school上面有讲到的。至于indexOf,w3school里面的JavaScript部分讲到可以str.indexOf("world")来判断world是在str字符串出现的位置。

  • qq_迸发激情_0
    2017-11-14 11:43:45

    className是js里的class属性名,是专有的,并不是封装的。

  • 大块吃肉188
    2016-09-11 09:19:28

    addClass(function(index,className){

     });其中的两个参数index,className,前者表示索引,后者是类名,但是两个都是形参(个人理解)你可以换成i,classN传进去一样有用,应该是jq内部封装好的,一定要传两个参数进去,不然就会报错。 if(-1 !== className.indexOf('imooc'))还有这句,这里的className和function(index,className)第二个参数对应,内部是有封装的,把你传进来的参数className定义成对象,所以可以直接拿来用了。新手理解,欢迎指正交流

  • qq_唯愛沵_03419990
    2016-08-27 15:03:14

    1. 后面用到了className了,  if(-1 !== className.indexOf('imooc'))这不就用到了className啦?而且要想用className,必须在前面有index参数,如果没有会默认是index,而不是className。className值得是div当前的类的名称。

    2. indexof这个方法在字符串就可以使用的,