2013-10-30 75 views
2

我有什麼可能是一個非常簡單的問題。我有一個花哨的下拉框的jQuery插件。使用jQuery插件ddSlick Dropdown - 如何動態填充JSON數據?

該插件是使用名爲:

$('#demoBasic').ddslick({ 
    data: ddData, 
    width: 300, 
    imagePosition: "left", 
    selectText: "Select your favorite social network", 
    onSelected: function (data) { 
     console.log(data); 
    } 
}); 

的JSON數據來填充下拉列表是:

var ddData = [ 
{ 
    text: "Facebook", 
    value: 1, 
    selected: false, 
    description: "Description with Facebook", 
    imageSrc: "http://dl.dropbox.com/u/40036711/Images/facebook-icon-32.png" 
}, 
{ 
    text: "Twitter", 
    value: 2, 
    selected: false, 
    description: "Description with Twitter", 
    imageSrc: "http://dl.dropbox.com/u/40036711/Images/twitter-icon-32.png" 
} 
]; 

所以我想要做的就是填充該JSON數據dynmically。我可以編寫PHP代碼來執行我的搜索並返回JSON,但是如何以編程方式執行此操作,以便基於搜索加載它?

我有一個想法,只是加載它通過ajax後,但然後返回結果在一個div ....會這樣嗎?

像:

submitHandler: function() { 
    $.post('lookup.php', $("#lookup").serialize(), function(data) { 
     $('#result').html(data); 
    }); 
}, 

我可以返回一個jQuery腳本thorugh需要的呼叫類型?

回答

0

昨天我遇到了類似的問題,我想在更改另一個過濾器時更新ddSlick選項。我發現的最簡單的方法是摧毀和重建。

在這個例子中,我正在過濾一個選項列表,但是這種方法適用於Ajax調用或其他選項提供的選項。每當image_folder_select選擇改變:產生

  1. 的的新選項列表。在這個例子中,我使用jQuery的grep通過ddData中的項目通過額外的自定義屬性(image_folder_id)匹配項目來創建新的過濾數組。注意:主頁ddData列表是在加載頁面時定義的。
  2. image_select選擇列表通過ddslick('destroy')恢復到原始狀態。
  3. 帶有新選項列表的新ddSlick實例綁定到image_select

實施例:

$("#image_folder_select").change(function() { 
    filtered_ddData = $.grep(ddData, function(e) {return e.image_folder_id == $("#image_folder_select").val()}); 

    $('#image_select').ddslick('destroy'); 
    $('#image_select').ddslick({ 
     data: filtered_ddData, 
     width: 512, 
     height: 256, 
     onSelected: function(data){ 
      $('#image_file_id').val(data.selectedData.value); 
     } 
    }); 
});