2016-11-01 17 views
1

に1.8からjQueryのUIを更新するとき、私はjQueryのUI 1.12Catcompleteウィジェットは1.12

var currentCategory = ""; 
$.widget("custom.catcomplete", $.ui.autocomplete, { 
    _renderMenu: function (ul, items) { 
     var self = this; 
     $.each(items, function (index, item) { 
      if (item.category != currentCategory) { 
       ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>"); 
       currentCategory = item.category; 
      } 
      self._renderItem(ul, item); 
     }); 
    }, 
    _renderItem: function (ul, item) { 
     var clase = ''; 
     switch (item.category) { 
     case 'Usuarios': 
      return $("<li class='" + clase + "'></li>") 
       .data("item.autocomplete", item) 
       .append("<a><img src='" + item.img + "' /><span class='name'>" + item.value + "</span></a>") 
       .appendTo(ul); 
      break; 
     case 'Posts': 
      return $("<li class='" + clase + "'></li>") 
       .data("item.autocomplete", item) 
       .append("<a><img src='" + item.img + "' /><span class='name'>" + item.value + "</span><span class='sub'><i class='fa fa-bookmark-o'></i> " + item.sub + "</span> <span class='sub'>" + item.votos + "<i class='fa fa-thumbs-o-up'></i></span> </a>") 
       .appendTo(ul); 
      break; 
     } 
    } 
}); 

に更新されるまでこれは、正常に動作してきた私のコード、ある作業を停止し、これは私がそれを使用する方法です。

cached.js:1692 Uncaught TypeError: Cannot read property 'category' of undefined(…) 

アン:このコードが正しくリストをレンダリング

$("#recipeName").catcomplete({ 
     source: "/jsonR.php", 
     minLength: 2, 
     selectFirst: true, 
     select: function (event, ui) { 
      console.log(ui); /* this logs Object item:undefined */ 
      var url = ''; 
      if (ui.item.category == 'Posts') { /* This is line 1692 */ 
       url = 'http://example.com/page.php?id=' + ui.item.id; 
      } 
      location.href = url; 
      return false; 
     }, 
     selectFirst: true, 
     open: function() { 
      $('.ui-autocomplete').addClass('searchBox'); 
      currentCategory = ""; 
     } 
    }); 

私は1つのオプションを選択すると、問題がありますyのアイデアjquery ui 1.12で動作するためには、このコードからどのように再適応する必要がありますか?

-EDIT-

私は、

self._renderItemData(ul, item)代わりにself._renderItem(ul, item)、選択作品を使用した場合、問題は、私は要素(と、それはポインタいないカーソルを置くと、私はエラーを取得することであることに気づきました。 。):

jquery-ui.js:5840 Uncaught TypeError: Cannot read property 'value' of undefined(…)

これはjqueryのUI上のライン5840であります

どのような考えですか?

+0

必要であったかどうかわからないです_create方法を、行方不明になりましたか?何が変わったのかについてのチェンジセットを見ましたか? –

+0

こんにちは、私が質問で言及したように、1.8では完璧に動作しています(ただし、私のバージョンはどちらかとは分かりません)。 1.12ではなく、私の最後のコードは私の質問の編集以来変更されていません..ありがとう! –

+0

コードペインまたはスニペットで再現してみてください... – shramee

答えて

2

私は、私はそれはあなたがからスイッチングされているバージョンから古いバージョン

$.widget("custom.catcomplete", $.ui.autocomplete, { 
    _create: function() { 
      this._super(); 
      this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); 
    } 
    // Rest of code.. 
}); 
+0

問題は解決済みですか、修正済みですか? – Aruna

+0

さて、私は答えを投稿しました。はい、それは固定です。 –

関連する問題