【问题标题】:jQuery contains with a list of GuidsjQuery 包含一个 Guid 列表
【发布时间】:2015-04-14 07:04:00
【问题描述】:

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

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

如果更改另一个值,我只想显示那些在数据属性列表中包含所选Guid 的元素。或者,也可以隐藏列表中没有选定Guid 的那些元素。

如何使用jQuery 实现这一点?

更新 #1

目前的答案不能解决我的问题(或者我遗漏了一些重要的观点),我想澄清我的问题。

我有一个&lt;select id="hidemyoptions"&gt; 和几个&lt;option&gt;s。每个&lt;option&gt; 都有一个数据属性,其中包含Guids 列表,以逗号分隔。

另一个&lt;select id="settheid"&gt; 设置一个Guid 值。在hidemyoptions-&lt;select&gt;我知道想:

  1. 仅显示那些数据属性包含Guidsettheid 设置的&lt;option&gt;
  2. 隐藏那些数据属性中不包含settheid设置的Guid&lt;option&gt;s

更新 #2

对我有用的解决方案:

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

【问题讨论】:

    标签: jquery contains custom-data-attribute


    【解决方案1】:

    您可以为此使用属性选择器。

    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

    【讨论】:

    • 没有解决我的问题。请参阅我更新的问题。还尝试了 api.jquery.com/attribute-contains-selectornot-jQuery 选择器。
    • 查看我的编辑(我自己根据给定的答案找到了解决方案)。你的会更快吗?
    • 你的更好。我忘了属性中的 * 选择器
    【解决方案2】:

    隐藏没有指定 guid 的选项

    $guid = '64be38c4-1fcc-4f09-80ff-6d8075a2fcb1';
    
    $('option').not('option[data-show-for*="'+$guid+'"]').hide();
    

    【讨论】:

    • 查看我更新的问题。也许我走错路了,但这并不能解决我的问题。
    • 更新我的代码比你的方法更快,因为我只搜索具有特定属性的选项元素,你正在搜索所有的 dom 元素
    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 2012-05-31
    • 2022-08-22
    相关资源
    最近更新 更多