2016-07-27 2 views
-1

Я наткнулся на фрагмент кода и попытался его понять. Я понимаю, что мы используем тернарный оператор и добавляем активный класс на menuclick, но подробное объяснение будет оценено.Понимание кода фрагмента кода терминов Javascript

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

Что именно вы не понимаете? – nicael

+0

Я хочу понять, когда мы добавляем активный класс, используя приведенный ниже оператор (($ (". Last-menuitem"). Attr ("id") == $ ("# menu li.active"), то что "найти «точно делает здесь» .find («a: last-child»). not («. ignore-ele»). attr («class») – almondn

ответ

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 равно активные пункты меню последнего ребенка, что doeesnt есть игнор иначе класс на нем.

если это верно мы идем к вложенной turnary

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

, который проверяет, если класс последнего элемента меню есть элементы в нем, то это делает элемент с .arrow класса имеет желтый CSS стиль.

Если первая часть вложенных токарный ложно, то мы попали на вторую часть

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

, который, если lastmenuItem с идентификатором класса представления Накопителя равняется активные пункты меню последней chiled что doeesnt есть игнорировать класс else на нем.

a do вышеупомянутый настоящая часть. Если не сделать третью часть гнездовой опоры

($(window).scrollTop() + $(window).height() >= $(document).height() - 20)) Если положение прокрутки + высота окна больше, чем высота документа - 20, верните истину. и сделать истинную часть вложенной подстатьи. else if all return false сделать ложную часть

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

Если все неверно, удалите желтый из элемента с классом .arrow. ниже - подстаканник разбит, чтобы его можно было читать

!_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')) 
): 
Смежные вопросы