2012-10-27 84 views
1

我一直在試圖讓一些jQuery運行替換對象的html。但是我怎麼能把一個if語句放在裏面,就像這樣。jquery if語句裏面的.html

$(this).html("<select id=\'status\' name=\'status[]\' multiple><option value=\'1\'"+if(string_contains(selected, 1)) { document.write(\' SELECTED\'); }+"></option></select>"); 

if語句使其停止工作。

還有一個小問題。

爲什麼不能在我裏面的.html打破這樣的:

 $(this).html(" 
<select id=\'status\' name=\'status[]\' multiple> 
<option value=\'1\'"+if(string_contains(selected, 1)) { document.write(\' SELECTED\'); }+"></option> 
</select>"); 
+0

JavaScript不允許在字符串常量(還)內換行符。 – Pointy

+0

@Pointy:除非你至少用反斜槓轉義。 – Bergi

+1

您正在尋找[三運營商](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator)? – Bergi

回答

4

你有什麼是隻是語法不正確。

$(this).html("<select id=\'status\' name=\'status[]\' multiple><option value=\'1\'" + 
    (string_contains(selected, 1) ? "\' SELECTED\'" : "") + 
    "></option></select>" 
); 

if聲明僅僅是一個—聲明。它不作爲JavaScript表達式的一部分工作。但是,? :運營商將做你想做的。它採取如下形式:

query ? expr1 : expr2 

query表達式進行評估。如果結果爲「truthy」,則總體結果爲expr1的值;否則,這是expr2的值。 ? :的運算符優先級相當低,所以將括號括起來通常是一個好主意。

+0

+1非常明確的答案 – MickMalone1983

+0

我試過這個 $(this).html(「「); 它根本不起作用。 但是 $(this).html(「

TEST

」); 工作得很好。 – NikolajSvendsen

+0

@NikolajSvendsen當你說「完全不工作」時 - 是否報告了JavaScript錯誤?結果不正確? – Pointy