jquery 赋值时后面加 || 什么意思,然后又跟一堆内容。。。。,还有[0]都表示什么意思啊!求解。

curr=$("li.current",this)[0]||$($li[0]).addClass("current")[0];... curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0]; 展开
 我来答
hutaoooooo
2012-02-29 · TA获得超过441个赞
知道小有建树答主
回答量:747
采纳率:0%
帮助的人:367万
展开全部
||不是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样式,然后返回它。
zgh26782000
2012-02-29 · TA获得超过1453个赞
知道小有建树答主
回答量:788
采纳率:0%
帮助的人:500万
展开全部
最简单的解释就是 || 前边的不为false的话就返回前边的值,否则返回后边的值
js里null 0 false defind 都是false,所以这里前边获取不到元素的话,就会curr的值就会等于||后边的元素
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式