1
    .data( "autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        if ( ( item.parent_term_id == "16" ) ) {
           .append( "<a>" + (item.child_term ? item.child_term : + "") + "</a>" )
        }
           .appendTo( ul );
    };

此代码属于 JqueryUi 自动完成小部件。如果项目的“parent_term_id”等于某个值,我希望自动完成文本输入来建议项目,否则不建议任何项目。(这是WordPress)

但是那个 if 语句不起作用。任何的想法?

4

3 回答 3

5
.data( "autocomplete" )
._renderItem = function( ul, item ) {
  var $li = $( "<li></li>" );

  $li.data( "item.autocomplete", item );

  if ( ( item.parent_term_id == "16" ) ) {
    $li.append( "<a>" + (item.child_term ? item.child_term : + "") + "</a>" );
  }
  return $li.appendTo( ul );
});

如果您必须在一行中执行此操作(尽管这样做没有意义):

.data( "autocomplete" )
._renderItem = function( ul, item ) {
  return $( "<li></li>" )
    .data( "item.autocomplete", item )
    .filter(function () {
      return item.parent_term_id == "16";
    })
    .append( "<a>" + (item.child_term ? item.child_term : + "") + "</a>" )
    .end()
    .appendTo( ul );
});
于 2012-07-15T16:02:57.097 回答
4

您在 jQuery 代码中看到的无休止的链接并不总是做某事的最佳方式。

在这里你最好使用一个变量:

.data( "autocomplete" )._renderItem = function( ul, item ) {
    var li = $( "<li></li>" );
    li.data( "item.autocomplete", item );
    if ( ( item.parent_term_id == "16" ) ) {
       li.append( "<a>" + (item.child_term ? item.child_term : + "") + "</a>" );
    }
    li.appendTo( ul );
    return li;
};

你可以结合其中的一些,但对于if,你必须停止执行链式函数调用,这意味着使用 var。

于 2012-07-15T15:59:40.843 回答
2

有时,放置一些警报以查看代码在哪里中断是有帮助的。此外,如果您认为 if 块没有被调用,您可以尝试简化它或反转逻辑。IE

alert("precondition");
if ( ( item.parent_term_id == "16" ) ) {
alert("in if block!");
   li.append( "<a>" + (item.child_term ? item.child_term : + "") + "</a>" );
}

简化

alert("precondition");
if ( ( item.parent_term_id) ) {
alert("in if block!");
   li.append( "<a>" + (item.child_term ? item.child_term : + "") + "</a>" );
}

逆向逻辑

alert("precondition");
if ( ( item.parent_term_id != "16") ) {
alert("in if block!");
   li.append( "<a>" + (item.child_term ? item.child_term : + "") + "</a>" );
}
于 2012-07-15T16:03:28.377 回答