0

我有这个块:

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

我想在append语句中放一个三元组,这样它要么只是 alabel要么label with an address

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

或者有点混乱但更具体..

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

我可以在这里制作一个可链接的 proc,因为我不能(我认为我不能)直接在 append 语句中添加这个三元组。

4

2 回答 2

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 );

但是,这很混乱,所以我会这样做:

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 );
于 2012-11-21T16:08:33.523 回答
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有条件..

于 2012-11-21T16:12:20.113 回答