$(this)[hasSelected?"removeClass":"addClass"]('selected')
等价于:
$(this).removeClass('selected');
或者
$(this).addClass('selected');
为什么$(this)后面可以加[]数组?,$(this)的常用写法一般用几种?这块不是很理解!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你要把$(this)看成一个整体,执行后的结果,是一个经过jquery转换的html对象,后面加的[],不是数组,而是取出这个对象的属性;
比如:
明白了么
$(this)就jq对象,你写成$(this)[0]就转成原生对象了,就可以使用原生的方法了。还可以这样写$(this).get(0),$(this).item(0)这些都是转成原生的。$(this).eq(0)仍然是jq的对象。
好吧
~ 现在才知道还要这种写法一般用的就是 后面两种 单独的 class 操作~~
hasSelected?"removeClass":"addClass" 这是一个3目运算,根据hasSelected的值,执行remove或者add操作
不用纠结这些比较偏门的写法的
遇到没见过的写法,查下 或者 console 输出下就知道了首先$(this)是一个jQuery对象,对象会有各种属性和方法。
removeClass和addClass就是$的方法。
[] 和 . 都可以访问对象的方法和属性。
[]中可以是js表达式。
就是一个表达式,用来决定是访问removeClass方法还是addClass方法。
本质上和.没有什么区别,只是.不能使用表达式。