我可以用jQuery做一个通用的可链接proc吗?

时间:2012-11-21 16:04:27

标签: javascript jquery method-chaining

我有这个块:

          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>" 

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

2 个答案:

答案 0 :(得分: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 );

答案 1 :(得分: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条件..