【问题标题】:Select values in bootstrap multiselect based on data attributes in jquery根据jquery中的数据属性在引导多选中选择值
【发布时间】:2017-11-27 09:37:53
【问题描述】:

我是 jquery/bootstrap 编码的新手,想实现以下目标。我有一个带有多个选项的选择(使用引导多选)。在此列表中,我尝试选择与数组值匹配的所有选项(下面代码中的 list1)。但是,我需要检查选项的数据属性(下面代码中的列表 2),而不是查看选项的值。

我的下拉菜单

<form>
  <select class="form-control" id="list1" multiple="multiple">
    <option data-vendorid="001" value="001">some-value-1</option>
    <option data-vendorid="002" value="002">some-value-2</option>
    <option data-vendorid="003" value="003">some-value-3</option>
  </select>

  <select class="form-control" id="list2" multiple="multiple">
    <option data-vendorid="001" value="some-value-1">some-value-1</option>
    <option data-vendorid="002" value="some-value-2">some-value-2</option>
    <option data-vendorid="003" value="some-value-3">some-value-3</option>
  </select>
</form>

我的脚本

var arr = [{
    "attr-1": "attr-value-1",
    "attr-2": "attr-value-2",
    "id": "001"
}, {
    "attr-1": "attr-value-1",
    "attr-2": "attr-value-2",
    "id": "003"
}];

//If I look for the default value, it works:
for (var i = 0; i < arr.length; i++) {
    $('#list1').multiselect('select', arr[i].id);
}

//So I tried something like this, but can't figure it out
for (var i = 0; i < arr.length; i++) {
    $('#list2').multiselect('select', $(arr[i]).data('vendorid'));
}

检查my updated fiddle

非常感谢您的帮助

【问题讨论】:

  • 什么是"attr-1": "attr-value-1"键值对?
  • 即使在 list1 中,您也不是在查看值,而是查看属性“id”;我觉得你已经回答了你自己的问题..
  • @dferenc: "attr-1": "attr-value-1" > 确实,键值对
  • @RajkumarSomasundaram:它不是在我的数组中查找名为 ID 的键吗?我更新了示例,现在不要使用相同的名称!
  • 当然是。但他们代表什么? html sn-p 中没有类似的属性。

标签: javascript jquery bootstrap-multiselect


【解决方案1】:

根据您的 cmets,我认为您正在尝试进行这样的数据映射:

var map = {};
$('#list2').find('option').each(function(index, elem) {
    map[$(elem).data('id')] = elem.value;
});

for (var i = 0; i < arr.length; i++) {
    $('#list2').multiselect('select', map[arr[i]['id']]);
}

根据docs of the multiselect jQuery plugin.multiselect('select', String|Array) 方法需要选择一个字符串或一个选项值数组。当您尝试根据其他属性进行选择时,您必须制作一个“字典”,将存储的记录映射到选项值。上面的例子就是这样做的。

更新:
我刚刚更新了代码以反映 Fiddle 中的确切属性名称。

【讨论】:

    【解决方案2】:

    使用

    $('#list2').multiselect('select', $(arr[i]).data('id'));
    

    .data()是jquery提供的函数,所以需要先用$选择数组元素

    【讨论】:

    • 嗯,这并不能解决问题。它使代码工作(因此感谢),但它不寻找数据属性。我更新了我的小提琴以使其更具逻辑性。 Fiddle
    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多