Сокращенный Javascript великолепен, но мне интересно, можно ли сделать этот условный сокращенный шаг еще дальше, чтобы дать значение true / false в зависимости от того, выполнено условие или нет. Например. Возьми это:

$('#col-URL-defaultText').css('display', ((val!==null && val!=="") ? 'none' : 'block'));

И создать что-то вроде этого:

var empty = $('#col-URL-defaultText').css('display', ((val!==null && val!=="") ? 'none' : 'block'));

(^ Вышеприведенное не помогает, но, надеюсь, вы получите то, чего я пытаюсь достичь ^)

1
Jonathan Hill 13 Дек 2016 в 17:42

4 ответа

Лучший ответ

Да, вы можете, протестировав полученный атрибут отображения и присвоив его переменной:

Boolean empty = $('#col-URL-defaultText').css('display', ((val!==null && val!=="") ? 'none' : 'block')).css('display')=='block';

Я не уверен, если вы действительно хотите проверить против «блока» или «нет» в конце.

0
codemonkey65 13 Дек 2016 в 14:57

Вместо использования функции .css ('display', ...) Вы можете использовать функции скрытия и отображения, по моему мнению, это проще поддерживать.

var $this = $('#col-URL-defaultText');
var empty = val !== undefined ?  $this.show() : $this.hide();
0
Hamid 15 Дек 2016 в 10:40

Присвойте результат переменной и используйте его после него:

var notEmpty = (val !== null && val !== '');
$(....).css('display', notEmpty ? "none" : "block");
3
oryol 13 Дек 2016 в 14:45

Если вы действительно хотите сделать все в одну строку, вы можете злоупотребить синтаксисом, заключив все в анонимную функцию:

var notEmpty = (function(b){ $(....).css('display', b ? "none" : "block"); return b })(val !== null && val !== '');

Но, честно говоря, я бы предпочел ответ oryol; это более читабельно.

0
Community 23 Май 2017 в 12:13