jquery - 拉取数据属性值并隐藏 P 而不匹配字符串

标签 jquery

HTML:

<!-- NAV Equivalent -->
<div class="part">
  <a data-type="test">Test</a>
  <a data-type="new">New</a>
</div>

<!-- Items -->    
<div>
  <h5>Example 1</h5>
  <p>Test</p>
</div>

<div>
  <h5>Example 2</h5>
  <p>New</p>
</div>

<!-- Example 3, Test...

jQuery:

$(".part span").click(
  function () {
    var dataType = $(this).attr('data-type');
    $("body").find('p[text*="' + dataType + '"]'):not(:contain("dataType")).addClass("hidden")
  }
);

我认为/希望 jQuery 工作的方式:

当单击.part内的span时,获取该span的data-type,并找到包含以下内容的段落:与该数据类型的值相同的字符串,并隐藏任何不包含该字符串的段落。

jsFiddle: https://jsfiddle.net/CSS_Apprentice/ft5jLka5/2/

最佳答案

您的想法是正确的,但您试图将 jQuery 选择器作为函数调用。

这是一个工作版本。

$(".part span").click(
  function () {
    var dataType = $(this).attr('data-type');
    $('p:not(:contains("' + dataType + '"))').addClass('hidden')

  }
);
.hidden{display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="part">
  <span data-type="test">Test</span>
  <span data-type="new">New</span>
</div>

<!-- Items -->    
<div>
  <h5>Example 1</h5>
  <p>Test</p>
</div>

<div>
  <h5>Example 2</h5>
  <p>New</p>
</div>

此外,正如您提到的,这是一个个人开发工具,您可以使用 javascript ES6 template literals 编写字符串连接。漂亮多了!

$(`p:not(:contains("${dataType}"))`).addClass('hidden')

关于jquery - 拉取数据属性值并隐藏 P 而不匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42450865/

相关文章:

javascript - 在移动设备中折叠或展开时 Bootstrap 导航颜色样式的方式

javascript - jquery fadeIn/fadeOut 无法正常工作

javascript - 找到两个对象的高度差异并将高度分配给另一个对象

jquery - 在视频标签上 float div

javascript - Jquery tablesorter 通过两个字段进行排序

jquery - 从变量 jquery 中删除字符串的一部分

javascript - 获取具有特定类且未禁用的同级 div

javascript - 在 Ajax 调用后跟随 ASP.NET ActionResult

javascript - 解释为什么这个 HTML 只能在 Firefox 中使用,而不能在任何其他浏览器中使用?

jquery - 如何隐藏html中的行