检测点击,检查属性值和里面的文字,显示元素

detect click, check attribute value and text inside, and display element

我需要检测元素(.menuitem)的点击,检查它包含的文本。 然后根据属性(is-checked),隐藏或显示其他元素。 我只有在单击其他按钮时才需要它。

<div class="items">
  <div class="menuitem" is-checked="true">
    <div class="ytp-menuitem-label">Button 1</div></div>
  <div class="menuitem" is-checked="false">
    <div class="ytp-menuitem-label">Button 2</div></div>
</div>
<div class="element">some content</div>
<div class="element">some more content</div>

$('.menuitem').click(function () {
if ($('.menuitem').text().trim() === "Button 2"){
if ($('[is-checked="true"]'))
  $('.element').css('display', 'block');
if ($('[is-checked="false"]'))
  $('.element').css('display', 'none'); }
});

这是我所拥有的JSFIDDLE

你有点错了,你的 if 语句实际上并没有查看被点击的元素。沿着这些方向尝试:

$('.menuitem').click(function () {
    // $(this) is a reference to  the element which was clicked
    if ($(this).attr('is-checked') == "true") 
        $('.element').css('display', 'block');
    if ($(this).attr('is-checked') == "false")
        $('.element').css('display', 'none');
});

$('.menuitem').click(function() {
  console.log($(this).text().trim())
  if ($(this).text().trim() === "Button 2") {
    if ($(this).attr('is-checked') == 'true') {
      $('.element').css('display', 'block');
    } else {
      $('.element').css('display', 'none');
    }





  }
});
.items {
  height: 30px;
  margin-bottom: 5px;
}
.menuitem {
  float: left;
  margin-right: 10px;
  border: 1px solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="items">
  <div class="menuitem" is-checked="true">
    <div class="ytp-menuitem-label">Button 1</div>
  </div>
  <div class="menuitem" is-checked="false">
    <div class="ytp-menuitem-label">Button 2</div>
  </div>
</div>

<div class="element">some content</div>
<div class="element">some more content</div>
<div class="element">even more content</div>

  1. 使用$(this).attr('is-checked')得到值
  2. 同样使用$(this).text().trim()获取点击元素的文本