2012-11-21 83 views
0

我有此塊:我可以用jQuery做一個通用的可鏈接處理程序嗎?

  return $("<li></li>") 
       .data("item.autocomplete", item) 
       .append("<a>" + item.label + "</a>") 
       .appendTo(ul); 
     }; 

我想提出一個三元在append語句,以便它要麼只是一個labellabel with an address

item.address != '' ? item.address : '' 

還是有點混亂,但更具體。 。

if (item.address != '') 
    "<span class='customer_search_addr'>" + item.address + "</span>" 
else 
    "<a>" + item.label + "</a>" 

我可以在這裏創建一個可鏈接的過程,因爲我不能(我不認爲我可以)添加在append語句中直接是三元的。

+0

它應該工作: http://jsfiddle.net/5LpqL/ –

+1

它真的必須在一行嗎?使其可讀。 – epascarello

回答

2

是的,你可以添加一個三元到append電話:

return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append((item.address != '')?("<span class='customer_search_addr'>" + item.address + "</span>"):("<a>" + item.label + "</a>")) 
      .appendTo(ul); 

Hovewer,這是相當混亂的,所以我會做這樣的:

var address = (item.address != '')? 
    ("<span class='customer_search_addr'>" + item.address + "</span>"): 
    ("<a>" + item.label + "</a>"); 

return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append(address) 
      .appendTo(ul); 
+0

很好的回答j0hn。我很感激。 – Trip

1

它應該工作。該參數將首先被評估,因此它只是將結果傳遞給函數。

證明演示:http://jsfiddle.net/5LpqL/

,但我相信這是更好,如果你第一次像下面對其進行評估,

var stuffToAppend = (item.address)?"<a>" + item.label + "</a>":"<span class='customer_search_addr'>" + item.address + "</span>"; 

return $("<li></li>") 
       .data("item.autocomplete", item) 
       .append(stuffToAppend) 
       .appendTo(ul); 

更妙的是要有if..else條件..

相關問題