了解Javascript三元语句代码段

时间:2016-07-27 18:24:23

标签: javascript code-snippets

我遇到了下面的代码片段,试图理解它。我知道我们正在使用三元运算符并在menuclick上添加活动类,但我们将非常感谢详细说明。

navClick: function (o) { 
var _this = this //what does this refer to

//what does this line of code do especially the equal sign
!_this.menuclicked ?(($(".last-menuitem").attr("id")==$("#menu li.active").find("a:last-child").not(".ignore-ele").attr("class") 
|| $(".last-menuitem").find(".view-holder").attr("id")==$("#menu li.active").find("a:last-child").not(".ignore-ele").attr("class") 
|| ($(window).scrollTop() + $(window).height() >= $(document).height() - 20))?($(".last-menuitem").length!=0 && $(".arrow").addClass('yellow'))
:($(".arrow").removeClass('yellow'))):
}

谢谢

1 个答案:

答案 0 :(得分:0)

!_this.menuClicked

我假设menuClicked是一个布尔表示,表示菜单是否已被点击。那么这就是说如果单击菜单返回false。因为!是否定运算符

所以如果!_this.menuClicked == true那么就这样做

(($(".last-menuitem").attr("id") == $("#menu li.active").find("a:last-child").not(".ignore-ele").attr("class") 
|| 
$(".last-menuitem").find(".view-holder").attr("id") == $("#menu li.active").find("a:last-child").not(".ignore-ele").attr("class") 
|| 
($(window).scrollTop() + $(window).height() >= $(document).height() - 20))
(".last-menuitem").attr("id") == $("#menu li.active").find("a:last-child").not(".ignore-ele").attr("class") 

第一个或检查lastMenuItems id是否等于活动菜单项最后一个具有忽略else类的子进程。

如果这是真的,我们去嵌套的转弯

($(".last-menuitem").length!=0 && $(".arrow").addClass('yellow'))

检查last-menuitem类中是否包含元素,然后使得.arrow类的元素具有黄色css样式。

如果嵌套式turnery的第一部分是假的,那么我们点击第二部分

$(".last-menuitem").find(".view-holder").attr("id") == $("#menu li.active").find("a:last-child").not(".ignore-ele").attr("class") 

如果具有视图持有者类的id的lastmenuItem等于最后被激活的活动菜单项,那么doeesnt上有忽略else类。

做前面提到的真实部分。如果没有做嵌套式车辆的第三部分

($(window).scrollTop() + $(window).height() >= $(document).height() - 20)) 如果滚动位置+窗口高度大于文档高度 - 20则返回true。并做嵌套式车辆的真正部分。否则如果所有返回false都执行false部分

($(".arrow").removeClass('yellow'))):

如果一切都为假,则使用.arrow类从元素中删除黄色。 下面是一个可读的turnery

!_this.menuclicked ?
(
     (
      $(".last-menuitem").attr("id") == $("#menu li.active").find("a:last-     
      child").not(".ignore-ele").attr("class") 
      ||    $(".last-menuitem").find(".view-holder").attr("id") == $("#menu 
             li.active").find("a:last-child").not(".ignore-ele").attr("class") 
       ||    ($(window).scrollTop() + $(window).height() >= $(document).height() 
             - 20)
      )
?  ($(".last-menuitem").length!=0 && $(".arrow").addClass('yellow'))
: ($(".arrow").removeClass('yellow'))
):