复杂if条件使用modal.js中的e.target

时间:2015-02-26 06:44:51

标签: javascript jquery

我只是看着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

谢谢。

高塔姆。

2 个答案:

答案 0 :(得分:0)

检查它是否包含元素。

参考:event.target

希望这有帮助

答案 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