Показать сообщение отдельно
  #10 (permalink)  
Старый 11.03.2015, 08:01
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Sigizmund2012
var value = (128 - 3 * e.type == 'keydown') + 'px';
Ну смотри, у нас навешано два события (keyup и keydown), они будут вызывать одну и ту же функцию.
Если событие keydown, то нам нужно подставить 125, а если keyup - то 128, верно?
Вот и подставляем значение:
e.type == 'keydown' -> тут у нас вернёт либо true, либо false, в зависимости от типа события.

3 * e.type == 'keydown' -> в данном случае, наше булево значение будет восприниматься как число, либо 3 * 1, либо 3 * 0, следовательно:

var value = (128 - 3 * e.type == 'keydown') + 'px' -> тут у нас получится либо 125px, либо 128px (всё зависит от типа произошедшего события).

Теперь про объект и ключи:
var ids = {69: 'exort', 81: 'quas', 82: 'invoke', 87: 'wex'}; -> это у нас объект с ключами, ключ должен возвращать e.keyCode.
Оператор in - это не обязательно for..in, этот оператор проверяет существования ключа у объекта/массива. К примеру:

var obj = {a: 'foo'};
alert('a' in obj) //true
alert('b' in obj) //false


Ну вот и всё, если e.keyCode есть в объекте, то подставляем значение объекта с ключём e.keyCode:
$('#' + ids[e.keyCode])

Надеюсь, что понятно объяснил.
Ответить с цитированием