检测点击,检查内部的属性值和文本,并显示元素

时间:2016-07-26 02:56:01

标签: javascript jquery css userscripts

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

<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

2 个答案:

答案 0 :(得分:0)

你有点不对劲,你的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');
});

答案 1 :(得分:0)

$('.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()获取点击元素的文字