Пользовательский интерфейс jQuery: как запустить оценку - PullRequest
0 голосов
/ 16 июня 2010

Я хочу добавить 'Year' или Years 'в конец строки в зависимости от строки.Вот так:

$("#selector").val(conditional_value_here);

Использование jQuery UI У меня есть слайдер, который манипулирует значением:

$("#slider").slider({
    value: 1,
    min: 1,
    max: 25,
    step: 1,
    slide: function(event, ui) {
        $("#amount").val(ui.value + ' Year' + function(){return (ui.value == 1) ? '' : 's';} );
    }
  });

// and again I want to do the same for the initialization of the value:
$("#amount_3").val($("#slider_3").slider("value") + ' Jahr' + function(){return ($("#slider_3").slider("value") == 1) ? '' : 's';});

Это не работает.Как правильно это сделать?

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Как сказал Рейгель, вы можете просто использовать троичный оператор ? :, не требуя функции.

condition ? x : y;

Если condition истинно, то возвращается x, в противном случае возвращается y. При его использовании просто обязательно используйте скобки.

str = "This is " + numDays + numDays == 1 ? " day" : " days" + " old";

// no matter the value of numDays, the above always evaluates to " day"
// it is equivalent to:

str = ("This is " + numDays + numDays == 1) ? (" day") : (" days" + " old");

// instead, this is probably what was wanted:

str = "This is " + numDays + (numDays == 1 ? " day" : " days") + " old";

В качестве альтернативы, если у вас была действительно действительно действительно хорошая причина сделать что-то подобное тому, что вы пробовали в своем примере, вы могли бы заставить это работать так :

$("#amount").val(
    ui.value + ' Year' + (function(){return (ui.value == 1) ? '' : 's';})()
);

... но если бы я увидел что-то подобное в производстве, я был бы вынужден охотиться на тебя с большим топором.

0 голосов
/ 16 июня 2010

просто

$("#amount").val(ui.value + ' Year' + (ui.value == 1) ? '' : 's');
...