Использование нескольких операторов '?'

216
14 октября 2017, 20:39

Здравствуйте. Хочу переписать скрипт, используя конструкцию:

условие ? выражение1 : выражение2

$('#search-btn').click(function () {
    console.log('test')
    if ( $(".boolean ").hasClass("checked")) {
        return
    }
    else if( $('#search_material').val() == ''){
        $('#search_material').focus()
    }
    else $('.type-checkbox ').addClass('active-confirm');    
});

У меня, к сожалению, не выходит сделать рабочий вариант. Подскажите, в чем ошибка?

   $('#search-btn').click(function () {
    ( $(".boolean ").hasClass("checked") ) ?  return :
   ( $('#search_material').val() == '') ?  $('#search_material').focus() :
    $('.type-checkbox ').addClass('active-confirm');
 });
Answer 1

Упростим задачу:

function aaa() { 
  (true)? return : 2; 
}

Смотрим ошибку в консоли.

Answer 2

Вместо return поставьте пустое выражение '' всё равно у вас по логике функции после условия нет никаких действий.

Чтобы выполнялось каждое подвыражение - "условие ? выражение1 : выражение2" бери в круглые скобки, например:

((условие) ? выражение1 : выражение2)

$('#search-btn').click(function () {
    ( $(".boolean ").hasClass("checked") ) ?  '' :
   (( $('#search_material').val() == '') ?  $('#search_material').focus() :
    $('.type-checkbox ').addClass('active-confirm'));
 });
Answer 3

А если вот так?

$('#search-btn').click(function () {
    var $s = $('#search_material'),
        $c = $('.type-checkbox '),
        b = $(".boolean").hasClass("checked"),
        s = $s.val();
    b ? null : s ? $s.focus() : $c.addClass('active-confirm');      
});
Answer 4

А так будет работать? Если второе условие полностью взять в скобки. У вас же сейчас поидее получается a ? b : c ? d : e а надо a ? b : (c ? d : e)

 $('#search-btn').click(function () {
    ( $(".boolean ").hasClass("checked") ) ?  return :
   (( $('#search_material').val() == '') ?  $('#search_material').focus() :
    $('.type-checkbox ').addClass('active-confirm'));
 });
READ ALSO
javascript redirect page

javascript redirect page

Есть страничка с картинкой размером x на у пикселейЕсли пользователь попал мышкой в область на картинке с координатами допустим x1+-10 на y1+-10...

285
Конструктор виньеток [требует правки]

Конструктор виньеток [требует правки]

А как можно сделать конструктор виньеток? Ну чтобы пользователь мог выбирать шаблон виньетки и добавлял фото учащихся и имя тд

322
Как поменять фон Яндекс.Карт?

Как поменять фон Яндекс.Карт?

Например, вот на такой, серый; заранее спасибо за помощь

218