繁体   English   中英

刷新下拉列表选择而无需在jQuery中刷新页面

[英]Refresh dropdown selection without page refresh in jQuery

听起来很简单。

我有此功能在页面加载时运行:

 function initializeSelect($select, uri, adapt){        
   $.getJSON( uri, function( data ) {
   $select.empty().append($('<option>'));       
   $.each(data, function(index, item) {
     var model = adapt(item);
     var $option = $('<option>');
     $option.get(0).selected = model.selected;
     $option.attr('value', model.value)
       .text(model.text)
       .appendTo($select);      
     });
   });
 });

在此处调用,并为下拉选择生成OPTIONS:

 initializeSelect($('#commoditySelect'), 'api/sel_keyCommodities.php', function (item) { 
   return {
     value: item.KEY_COMMODITY,
     text: item.KEY_COMMODITY
   }
 });

当模式窗口关闭时,我需要能够刷新下拉菜单而不刷新页面:

 $('#messageModal').on('hidden.bs.modal', function()
 {
    // I tried this to no avail
    initializeSelect();       
 });

这样,下拉选择将重新运行,并可能添加或未添加新选择。

可以做到吗?如果可以,怎么做?

您可以存储值uriadapt “中的” <select>data(...)并使用这些调用时initializeSelect不带参数(或至少不uriadapt

function initializeSelect($select, uri, adapt) {
  if (typeof uri !== "string") {
    uri = select.data("uri");
    adapt = select.data("adapt");
  } else {
    select.data({
      "uri": uri,
      "adapt": adapt
    });
  }

  $.getJSON(uri, function(data) {
    $select.empty().append("<option>");

    $.each(data, function(index, item) {
      var model = adapt(item);

      $("<option>")
        .val(model.value)
        .text(model.text)
        .prop("selected", model.selected)
        .appendTo($select);
    });
  });
}

要“刷新” <select>您将必须调用initializeSelect()并将其传递给所需的<select>

initializeSelect($("commoditySelect"));

jsfiddle上的示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM