2012-08-02 79 views
0

總結:添加的所有項目的類別需要與項目名稱一起保存。這樣就可以在提交時傳輸此類別信息,以便使用正確的查詢(與正確的表格有關)。想法?jQueryUI類別通行證類別信息

我需要做的是,當用戶選擇他們正在搜索的內容(從自動完成下拉菜單中選擇)時,類別信息(又名類別名稱)也會記錄在某處。

這個想法是,當用戶按搜索,他們正在尋找的短語以及類別名稱也發送。推理:你有3張桌子,其中一張包含汽車信息,一張在動物身上,另一張在外國人身上。如果所涉及的表已經確定(從類別信息中),則不需要全部查詢3。

與搜索所有3問題是,你可能有一個名爲海綿鮑勃外星人,以及動物等

這裏是我們正在處理(從jQueryUI的網站)的代碼:

$.widget("custom.catcomplete", $.ui.autocomplete, { 
    _renderMenu: function(ul, items) { 
     var self = this, 
      currentCategory = ""; 
     $.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); 
     }); 
    } 
}); 

我的想法是,品類齊全的功能中,下選擇事件:

$(function() { 
     $("#search").catcomplete({ 
      delay:0, 
      source: "query/encode-json.php?term="+ $("#search").val(), 
      select: function(event, ui){ 

      } 
     });  
    }); 

是與所選項目相關聯的類別,可以發送/秒在某處。我遇到的問題是,我可以在窗口小部件功能(item.category)中獲取此信息,但該信息在select事件中不可用(直接)。這是有道理的,因爲小部件只填充列表,它不處理選擇事件(我在想),但不知何故我需要能夠訪問這些信息。我的想法是找到索引並從那裏倒退,但似乎並不奏效。另一個選項(更基本的)是每次小部件循環播放時,類別名稱將被添加到li元素的標題字段中。

我一直在嘗試幾個小時,沒有得到任何解決方案。

感謝您的任何光線,你可能會流下:)

回答

0

想出了一個辦法。這是我結束了代碼:

$(".ui-menu-item").live('click', function(e) { 
     cat = $(this).prevAll(".ui-autocomplete-category:first").text(); 
    }); 

起初我曾與它的點擊枝節問題,因爲我不知道我需要它的活邊等於是試圖這樣:

$(".ui-menu-item").click(function() { 

    }); 

所以,它的功能是當選擇一個搜索結果(點擊)時,上面類別的文本被獲取並分配給cat變量。我已經設置這個變量傳遞到重新進行搜索的搜索頁面:

function test(){ 
         var i = document.createElement('input'); 
         i.type = 'hidden'; 
         i.name = 'cat'; 
         i.value = cat; 
         document.getElementById("searchForm").appendChild(i); 
        } 

來源:jquery find closest previous sibling with class