jQuery包含Guids列表

时间:2015-04-14 07:04:01

标签: jquery contains custom-data-attribute

我在选项标签上有自定义数据属性,其中包含Guid的列表,例如

<option data-show-for="64be38c4-1fcc-4f09-80ff-6d8075a2fcb1,b2457a92-e743-41f7-a448-a171bcfe92e1,2f02a194-4fff-417e-b776-f686f307c919">

如果要更改其他值,我只想显示那些在data-attribute列表中包含所选Guid的元素。或者,也可以隐藏列表中没有选定Guid的元素。

如何使用jQuery实现这一目标?

更新#1

截至目前的答案并没有解决我的问题(或者我错过了一些重点),我想澄清一下我的问题。

我有<select id="hidemyoptions"><option>个。{每个<option>都有一个数据属性,其中包含Guid的列表,以逗号分隔。

另一个<select id="settheid">设置Guid - 值。在hidemyoptions - <select>,我知道要:

  1. 仅显示<option>个数据属性包含由Guid
  2. 设置的settheid的{​​{1}}个
  3. 隐藏哪些数据属性不包含<option>
  4. 设置的Guid的{​​{1}}个

    更新#2

    对我有用的解决方案:

    settheid

2 个答案:

答案 0 :(得分:2)

您可以使用属性选择器。

var guid="64be38c4-1fcc-4f09-80ff-6d8075a2fcb1,b2457a92-e743-41f7-a448-a171bcfe92e1,2f02a194-4fff-417e-b776-f686f307c919"
$("option[data-show-for='"+guid +"']").prop("selected",true);

Fiddle

根据要求进行编辑

var guid = "2f02a194-4fff-417e-b776-f686f307c919";
$("option").hide();
$("option").filter(function() {
    return $(this).data("show-for").indexOf(guid) > -1;
}).show();

Updated fiddle

答案 1 :(得分:1)

隐藏没有指定guid的选项

$guid = '64be38c4-1fcc-4f09-80ff-6d8075a2fcb1';

$('option').not('option[data-show-for*="'+$guid+'"]').hide();