2010-06-16 65 views
0

我想根據字符串將「Year」或「Years」添加到字符串末尾。 像這樣:jQuery UI:如何運行評估

$("#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';}); 

這是行不通的。什麼是正確的方法呢?

+0

我懷疑很多人會打擾你回答這個問題,因爲你把它標記爲社區維基,並且他們不會爲他們發佈的任何內容獲得聲望。 – animuson 2010-06-16 08:32:54

+0

感謝您的信息,我的錯誤..無法撤消它,似乎。 – mikkelbreum 2010-06-17 11:00:45

回答

0

只是

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

不要忘記優先順序。 'ui.value +'Year'+(ui.value == 1)'永遠是真的。 – nickf 2010-06-16 08:56:25

1

正如Reigel說,你可以使用三元運算? :不需要的功能。

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

謝謝,但你能解釋這是如何工作的: str =「This is」+ numDays +(numDays?「day」:「days」)+「old」; 我的意思是,病情在哪裏?既然沒有比較操作符參與,那麼var numDays不會評估爲TRUE,除非它爲零?所以1和3分別會導致字符串'1天'和'3天'? – mikkelbreum 2010-06-17 11:09:25

+0

@mikkelbreum啊真的 - 原諒我的腦海融化。我現在編輯。 – nickf 2010-06-17 14:03:03