2013-03-28 36 views
3

我有一個由兩個不同按鈕執行的jQuery函數。inline if else語句在jQuery中

$("#btnSearch, #btnDirectorSearch").click(function() { 

此函數構建的html的一部分取決於哪個按鈕被擊中。我使用的數據 - 屬性來存儲我的變量是這樣的:

var div = $(this).data("str"); 

和HTML字符串我建立取決於什麼值的變量「格」是。有沒有辦法在jQuery中做inline if/else語句?

if div = "choice1" { 
    html += '<tr data-str = "str1" data-dataItem = "dataItem1" data-result-title = "' + name + '" data-result-id="' + sel + '">'; 

} else { 
    html += '<tr data-str = "str2" data-dataItem = "dataItem2" data-result-title = "' + name + '" data-result-id="' + sel + '">'; 
} 

這似乎很麻煩,我希望有一個更好的jQuery的方式來做到這一點。

謝謝!

+0

yes javascript ...對不起我只是想知道是否有更好的方式來使用jQuery庫。 – SkyeBoniwell

回答

12

你有一個語法錯誤

if div = "choice1" 

應該

if (div == "choice1") 

無論如何,你要尋找的模式是:

div == "choice1" ? <code for true> : <code for false> 
+0

哎呀感謝捕捉! – SkyeBoniwell

3

可以使用condition ? code when true: code when false

但是我建議你只使用curley括號,因爲它看起來更好,更容易調試。如果你的選擇是有限的

var num = div == "choice1" ? 1 : 2; 
html += '<tr data-str="str'+num+'" data-dataItem="dataItem'+num+'" data-result-title="'+name+'" data-result-id="' + sel + '">'; 
+0

我不知道 - 我認爲內聯對眼睛更好,價值分配更快速閱讀和理解。無論如何,對我來說似乎更直觀。 –

2

因爲它只是改變了輸出的數量,你可以這樣做,您可以添加一個小型查找陣列:

var choices = { 
    choice1: { 
     str: "str1", 
     data: "dataItem1" 
    }, 
    choice2: { ... } 
}; 

html += '<tr data-str="' + choices[div].str 
    + '" data-dataItem="' + choices[div].data 
    + '" data-result-title="' + name + ... etc; 
0

: 一件事,做如下

if(div==="choice1"){ 

} 
else{ 
} 

使用===