0

私はこのブロックを持っています:

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

そして、私はappendステートメントに三元を入れて、それがただのlabelまたはlabel with an address

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

または少し厄介ですが、より具体的です。

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

このターナリをappendステートメント内に直接追加することはできないので(私はできないと思います)、ここでチェーン可能なprocを作成できますか?

4

2 に答える 2

2

はい、append呼び出しに3値を追加できます。

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 );
于 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 に答える