Сократить/уменьшить код

12
AG
На сайте с 13.10.2014
Offline
44
730

Здравствуйте.

Написал функцию, она работает. Но как можно сократить, а то много букаф:

var myChoice = $('.x').html ();

if (myChoice !== undefined) {
myChoice = $('.x').html ();
}
else {
myChoice = $('.y').html ();
}

Смысл в том, что если отсутствует x, обращаемся к y.

Joker-jar
На сайте с 26.08.2010
Offline
154
#1

var myChoice = $('.x').length ? $('.x').html() : $('.y').html();
AG
На сайте с 13.10.2014
Offline
44
#2

Joker-jar, да, это работает. Я так понимаю тут length проверяет наличие элемента и далее ? = то(if), а : = или(else) ? Вроде правильно понимаю? Спасибо.

bay_ebook
На сайте с 28.05.2010
Offline
111
#3
AlexGr4:
Я так понимаю тут length проверяет наличие элемента

Вы хоть в гугле почитайте что это за функция. А то накодите такого ... :)

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
AG
На сайте с 13.10.2014
Offline
44
#4

bay_ebook, ну она отбирает ВСЕ элементы массива. Вот мне и интересно как она попала сюда)

bay_ebook
На сайте с 28.05.2010
Offline
111
#5
AlexGr4:
bay_ebook, ну она отбирает ВСЕ элементы массива. Вот мне и интересно как она попала сюда)

Нет, она показывает длину строки или размер массива.

То есть, строка "url" имеет длину = 3

А если длина = 0 - значит строка либо пустая, либо отсутствует вовсе. Вот тогда и вступает if

:)

AG
На сайте с 13.10.2014
Offline
44
#6

bay_ebook, вот спасибо за пояснения!

iBrains
На сайте с 06.11.2011
Offline
67
#7

Joker-jar, не знал, что jquery вернет нулевую длину, если объекта нет. Спс

AG
На сайте с 13.10.2014
Offline
44
#8

iBrains, но в моем случае length не ноль ищет, а в принципе ищет различие от самого себя. И там не важно сколько символов 0 или 10, главное что не столько же сколько в нем самом. Надеюсь я правильно понимаю.

bay_ebook
На сайте с 28.05.2010
Offline
111
#9
AlexGr4:
iBrains, но в моем случае length не ноль ищет, а в принципе ищет различие от самого себя. И там не важно сколько символов 0 или 10, главное что не столько же сколько в нем самом. Надеюсь я правильно понимаю.

Нет, не правильно.

length - просто указывает длину строки или размер массива

Просто при нестрогом сравнении (==)

0 == false == undefined == '' == null == "пустой массив"

тип данных не учитывается.

Joker-jar
На сайте с 26.08.2010
Offline
154
#10

В данном случае используется именно размер массива (т.к. идет обращение к набору элементов, возращаемых jQuery, а не ко строковому атрибуту), поэтому "$('.x').length" можно трактовать именно как "наличие (хотя бы одного) элемента с классом x".

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий