0

我有一个 SelectList 从我的 MVC ActionResult 作为 Json 数据返回:

控制器:

  public JsonResult _ConnectorFilters(string arg1, string arg2, string arg3) {
      //collecting selectlist items ex: 
      listConatenated.Add(newSelectListItem {Value = "Category1", Text = "attribute1"};
      listConatenated.Add(newSelectListItem {Value = "Category1", Text = "attribute2"}
      listConatenated.Add(newSelectListItem {Value = "Category2", Text = "attribute3"};

     return Json(new SelectList(listConcatenated, "Value", "Text"));

 }

我想在我的视图列表中找到与option<select/>valueJsonResult 中返回的匹配类别相同但不匹配文本的每个项目,并将每个项目的“禁用”属性更改为“真”。 "

重申一下,如果我目前有以下内容列表:

  <select class="Category1Class">
     <option value="Category1">attribute100<option/>
     <option value="Category1">attribute40<option/>
     <option value="Category1">attribute1<option/>
     <option value="Category1">attribute2<option/>
  </select>

然后我试图写入success:结果函数的 jquery 函数将返回:

  <select class="Category1Class">
     <option value="Category1" disabled>attribute100<option/>
     <option value="Category1" disabled>attribute40<option/>
     <option value="Category1">attribute1<option/>
     <option value="Category1">attribute2<option/>
  </select>                     

我希望这是有道理的。与 Json 结果进行比较时,不确定如何开始。提前谢谢你,如果我能更清楚,请告诉我。

4

1 回答 1

1

假设响应看起来像:

[
 { "Value": "Category1","Text": "attribute1"},
 { "Value": "Category1","Text": "attribute2"}
]

您可以循环使用响应each()并使用filter()来隔离匹配的 DOM 元素:

var $opts= $('select.Category1Class option');
/* loop over response as "data" */
$.each(data, function( index, item){
   $opts.filter(function(){
       /* return boolean based on matches */
       return $(this).text() === item.Text && this.value === item.Value;
      /* disable resultant collection */
   }).prop('disabled', true);
});
于 2014-11-18T19:30:31.610 回答