2012-11-21 53 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条件..

相关问题