jquery 赋值时后面加 || 什么意思,然后又跟一堆内容。。。。,还有[0]都表示什么意思啊!求解。
curr=$("li.current",this)[0]||$($li[0]).addClass("current")[0];...
curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];
展开
2个回答
展开全部
||不是jQuery独有的,他是js的“短路或”运算符。
在jQuery中这样的用法的意义在于判断了第一个条件就不用计算第二个了。具体解释如下:
curr=$("li.current",this)[0] || $($(li[0]).addClass("current")[0]
首先,计算的是||号左边部分$("li.current",this)[0],$("li.current",this)在jQuery中,表示的是当前对象下面class="current"的li元素的数组。再在后面添上[0]运算符,表示取数组中的第一个元素。如果找到了这个元素,那么就直接把这个元素赋给curr,然后不计算||后面的表达式,然后进入下一语句;
如果找不到,那么计算||后面的表达式$($(li[0]).addClass("current")[0]。先看$(li[0]),表示选择所有有名字为“0”的属性的li元素,然后$($(li[0]).addClass("current"),表示把这些元素都添加一个"current"的Class,然后用[0]取得其中的第一个,最后返回这个元素。
这时,由于||前面的表达式没有找到元素,两者进行或运算的结果就是||后面的表达式的结果,就是刚才找到的那个元素,于是就把这个元素赋值给了curr。
补充:我觉得第二部分的表达式有点问题,建议改成:
curr=$("li.current", this)[0] || $($(li)[0]).addClass("current")[0];
试试。
这样,第二部分表示的就是取得第一个li元素,然后添加current样式,然后返回它。
在jQuery中这样的用法的意义在于判断了第一个条件就不用计算第二个了。具体解释如下:
curr=$("li.current",this)[0] || $($(li[0]).addClass("current")[0]
首先,计算的是||号左边部分$("li.current",this)[0],$("li.current",this)在jQuery中,表示的是当前对象下面class="current"的li元素的数组。再在后面添上[0]运算符,表示取数组中的第一个元素。如果找到了这个元素,那么就直接把这个元素赋给curr,然后不计算||后面的表达式,然后进入下一语句;
如果找不到,那么计算||后面的表达式$($(li[0]).addClass("current")[0]。先看$(li[0]),表示选择所有有名字为“0”的属性的li元素,然后$($(li[0]).addClass("current"),表示把这些元素都添加一个"current"的Class,然后用[0]取得其中的第一个,最后返回这个元素。
这时,由于||前面的表达式没有找到元素,两者进行或运算的结果就是||后面的表达式的结果,就是刚才找到的那个元素,于是就把这个元素赋值给了curr。
补充:我觉得第二部分的表达式有点问题,建议改成:
curr=$("li.current", this)[0] || $($(li)[0]).addClass("current")[0];
试试。
这样,第二部分表示的就是取得第一个li元素,然后添加current样式,然后返回它。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询