如何选择不包含部分数据属性值的元素?

Posted

技术标签:

【中文标题】如何选择不包含部分数据属性值的元素?【英文标题】:How can I select elements that don't include part of data- attribute value? 【发布时间】:2018-02-23 03:28:16 【问题描述】:

我尝试在 data 属性中隐藏不包含部分文本的元素。 这是一个例子。预期的结果应该是隐藏所有不包含类似于“UK”的键的元素

<input type="text" id="step3LRGender" data-country="UK IT">
<input type="text" id="step3LRAge" data-country="PL IT">
$('[data-country*="UK"]').show();
$('[data-country!*="UK"]').hide();

【问题讨论】:

为什么不用id? 因为我会有几个不同的元素(div、标签、输入) 【参考方案1】:

将您的代码与:not() 结合起来,就像$('input:not([data-country*="UK"])').hide(); 一样

演示

$('input[data-country*="UK"]').show();
$('input:not([data-country*="UK"])').hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="step3LRGender" data-country="UK IT">
<input type="text" id="step3LRAge" data-country="PL IT">

您还可以使用以下内容:

$('input,div').filter(function() 
  return $(this).data('country').indexOf("UK") > -1 ? $(this).show() : $(this).hide();
);

演示

$('input,div').filter(function() 
  return $(this).data('country').indexOf("UK") > -1 ? $(this).show() : $(this).hide();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="step3LRGender" data-country="UK IT">
<input type="text" id="step3LRAge" data-country="PL IT">

<div data-country="UK IT">UK IT</div>
<div data-country="PL IT">PL IT</div>

【讨论】:

问题是我需要显示和隐藏不同类型的元素,而不仅仅是输入(对不起,示例中只有输入) @CarlosMartins 尝试运行第二个演示。你可以添加你想要的选择器

以上是关于如何选择不包含部分数据属性值的元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据部分数据属性选择元素?

CSS如何选择不包含某个class的元素

具有特定属性名称和值的 Scrapy .css 选择元素

JQuery中常用的选择器

我有一个基于所选城市长度不同的对象数组。如何选择包含具有特定属性的对象的元素?

如何正确命名包含返回从此类中设置的源中选择的值并以相同方式设置源值的属性的类?