我只是看着modal.js的来源,遇到了以下困难。我不太了解以下if语句:
if (this.$element[0] !== e.target && !this.$element.has(e.target).length)
好的,我确实了解它的一部分,但我不完全理解它。
我确实看到一些有用的资源对我有帮助,但我仍然不能完全理解if if:
我看到了thread。
我也读过W3C。
但我仍然无法完全掌握发生的事情。
所以到目前为止我所理解的是什么。
在以下行中:
if (this.$element[0] !== e.target && !this.$element.has(e.target).length)
这个。$ element是一个原生的JS HTML emelemt,我们正在检查它是否与e.target匹配,下一个条件怎么样?
!this.$element.has(e.target).length
我们在这里检查什么?有(e.target)?我以前从未见过。
我看到类似this.$element.hasClass('classname')
的内容,但has(e.target).length
是什么。 ?
我真的很感激,如果有人可以用一个例子来解释,那条线正在做什么
这行也可以在git上找到,line 135。
谢谢。
高塔姆。
答案 0 :(得分:0)
答案 1 :(得分:0)
所以我的问题是以下几行:
if (this.$element[0] !== e.target && !this.$element.has(e.target).length)
让我们逐一评估,
this。$ element [0] - 是一个HTML元素。
e.target - 是一个在其上执行事件的HTML对象,例如。点击,悬停等。
所以第一个条件是
如果此特定元素this.$element[0]
不等于事件发生的元素!==
e.target
。
代码如下:this.$element[0] !== e.target
现在进入了条件:
!this.$element.has(e.target).length
! - 非运营商
this。@ element - 一个Jquery元素
has - 一个jquery方法/函数
length - 返回长度。
所以我们基本上都在说这个特殊元素this.$element
是否有发生事件的元素has(e.target)
,............. Errrrrr,我很漂亮在此之后失去了很多,有人来完成我的答案。 :) .length
到底做了什么? ,还怎么样!影响条件。
<强> P.S。给我几分钟,我会回复我的最新答案。只想弄清楚最后一个条件。只需几分钟。 :D