代码之家  ›  专栏  ›  技术社区  ›  TheWebs

当数据属性不匹配时,隐藏元素的最佳方法是什么?

  •  0
  • TheWebs  · 技术社区  · 6 年前

    考虑以下事项:

    jQuery('document').ready(function($) {
      $('#num-locations input[type="checkbox"]').on('click', function(e) {
        if (e.target.checked) {
          dataId = e.target.dataset.location;
          console.log(dataId);
          $('.jobs-listing [data-city]').not('[data-city*="'+dataId+'"]').hide();
        } else {
          $('.jobs-listing [data-city]').show();
        }
      });
    });
    

    下面是HTML的一个例子,可能有很多这样的例子:

    <div class="manage-wrapper  d-flex py-5 eachJob" data-city="Ottawa" data-province="Ontario">
        <div class="manage-text w-7">
            <h4 class="font-weight-bold mt-0 mb-1 job-title"></h4>
            <p class="job-description"></p>
        </div>
        <div class="manage-aside text-right w-3">
            <h4 class="font-weight-bold mt-0 mb-1 job-location">Ottawa</h4>
            <p class="mb-0 job-province">Ontario</p>
            <a href="#" class="btn btn-primary job-url" tabindex="-1">VIEW JOB</a>
        </div>
    </div>
    
    • 预期 :在这种情况下,只对父级DIV应用DISPLAY NONE。 '.manage-wrapper'

    • 实际 :页面上的所有内容都隐藏,因为“display:none”应用于 .manage-wrapper 但不适用于 管理包装器 这是自我。

    • 单击所述复选框时没有控制台错误。

    正确的应用方法是什么 : display: none 到任何带类的DIV manage-wrapper 单击时 data-location 不匹配 data-city ?

    [和]

    当您取消选中所说的复选框时,恢复“隐藏”元素的正确方法是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   mbunch    6 年前

    稍微简单一点,但应该让你去。

    $('document').ready(function($) {
      $('#num-locations input[type=checkbox]').on('change', function() {
        $.each($('.manage-wrapper'), function(key, value) {
          if ($(value).data('location') != $(value).data('city')) {
            $(value).hide();
          }
        });
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="num-locations">
      <input type="checkbox" />
    </div>
    <div class="manage-wrapper  d-flex py-5 eachJob" data-city="Ottawa" data-province="Ontario">
      <div class="manage-text w-7">
        <h4 class="font-weight-bold mt-0 mb-1 job-title"></h4>
        <p class="job-description"></p>
      </div>
      <div class="manage-aside text-right w-3">
        <h4 class="font-weight-bold mt-0 mb-1 job-location">Ottawa</h4>
        <p class="mb-0 job-province">Ontario</p>
        <a href="#" class="btn btn-primary job-url" tabindex="-1">VIEW JOB</a>
      </div>
    </div>