Сокращенный 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'));
(^ Вышеприведенное не помогает, но, надеюсь, вы получите то, чего я пытаюсь достичь ^)
4 ответа
Да, вы можете, протестировав полученный атрибут отображения и присвоив его переменной:
Boolean empty = $('#col-URL-defaultText').css('display', ((val!==null && val!=="") ? 'none' : 'block')).css('display')=='block';
Я не уверен, если вы действительно хотите проверить против «блока» или «нет» в конце.
Вместо использования функции .css ('display', ...) Вы можете использовать функции скрытия и отображения, по моему мнению, это проще поддерживать.
var $this = $('#col-URL-defaultText');
var empty = val !== undefined ? $this.show() : $this.hide();
Присвойте результат переменной и используйте его после него:
var notEmpty = (val !== null && val !== '');
$(....).css('display', notEmpty ? "none" : "block");
Если вы действительно хотите сделать все в одну строку, вы можете злоупотребить синтаксисом, заключив все в анонимную функцию:
var notEmpty = (function(b){ $(....).css('display', b ? "none" : "block"); return b })(val !== null && val !== '');
Но, честно говоря, я бы предпочел ответ oryol; это более читабельно.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.