javascript - 单击按钮返回所有链接

标签 javascript jquery html css

我有一个包含大量链接的页面。

我集成了一个搜索框供用户输入链接名称,当他们点击“搜索”按钮时,它会返回包含用户输入内容的所有链接:

这是此页面的 HTML 部分:


<h4><a href="#" id="Trig16">First Header</a></h4>
<div class="slider" id="Slide16">
    <ul>
        <li><a href="/TestDocument.doc" target="_blank">Document 1</a></li>
        <li><a href="/TestDocument2.doc" target="_blank">Document 2</a></li>
        <li><a href="/TestDocument3.doc" target="_blank">Document 3</a></li>
    </ul>
</div>

<h4><a href="#" id="Trig19">Second Header</a></h4>
<div class="slider" id="Slide19">
    <ul>
        <li><a href="~/Docs/Document4.pdf" target="_blank">Document 4</a></li>
        <li><a href="~/Docs/Document5.pdf" target="_blank">Document 5</a></li>
    </ul>
</div>

这是该按钮的 JavaScript:


$("#ButtonSearch").click(function () {
    var textboxValue = $("#SearchLink").val().toLowerCase();
    $('.slider').each(function () {
        var exist = false;
        $(this).find('ul li').each(function () {
            if ($(this).find('a').text().toLowerCase().indexOf(textboxValue) !== -1) {
                $(this).show();
                exist = true;
            }
            else
                $(this).hide();
        });
        if (exist === false) {
            $(this).prev('h4').hide();
            $(this).hide();
        }
        else {
            $(this).prev('h4').show();
        }
    });
});

现在我还有一个清除按钮.. 当用户点击该按钮时,我希望所有 slider 、标题、ul、li 和链接在不刷新页面的情况下返回。

到目前为止,这是我对该按钮的了解:


$("#ButtonClearSearch").click(function () {
    $("#SearchLink").val("");
    $('.slider').each(function() {
        $(this).prev('h4').show();
    });
});

举个例子..如果我是用户并在搜索框中输入Document 1..然后点击搜索,它会返回标题First Header 下面是 Document 1

现在,如果我点击 Clear search.. 它会返回我所有的 h4 元素,但在它们下面没有任何内容,除了 First Header 元素和 Document 1 在下面..所以它保留了原始搜索并只返回其余的 h4 元素..

所以我的问题是如何在点击清除搜索按钮时返回所有内容?

最佳答案

这将在按键或粘贴时实时过滤。当您的用户在搜索中输入内容时,如果链接包含文本,它将隐藏不包含文本的链接,并显示包含文本的链接。随着值的变化,它将根据搜索的值显示或隐藏。

编辑:搜索现在绑定(bind)到按钮

let filter = function(){
  
  $filter = $('#search-filter').val();
  
  $.each($('a'),function(k,v){
    
    let heading = '#'+$(v).closest('div').attr('data-bind');
    let sibs = $(v).parent().siblings();
    
    if(v.innerText.toLowerCase().indexOf( $filter ) > -1){
      //Show
      $(v).closest('li').show();
    }
    else {
      //Hide
      $(v).closest('li').hide();
    }
    
  });
}

$('#searchBtn').on('click',filter);

$('#clrBtn').on('click',function(){
  $("#search-filter").val("");
  filter();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="search-filter"> <input id="searchBtn" type="button" value="Search"> <input id="clrBtn" type="button" value="clear">

<h4 id="Trig16">First Header</h4>
<div class="slider" id="Slide16" data-bind="Trig16">
    <ul>
        <li><a href="/TestDocument.doc" target="_blank">Document 1</a></li>
        <li><a href="/TestDocument2.doc" target="_blank">Document 2</a></li>
        <li><a href="/TestDocument3.doc" target="_blank">Document 3</a></li>
    </ul>
</div>

<h4 id="Trig19">Second Header</h4>
<div class="slider" id="Slide19" data-bind="Trig19">
    <ul>
        <li><a href="~/Docs/Document4.pdf" target="_blank">Document 4</a></li>
        <li><a href="~/Docs/Document5.pdf" target="_blank">Document 5</a></li>
    </ul>
</div>

关于javascript - 单击按钮返回所有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206623/

相关文章:

jquery - Jqgrid - 对行级数据进行分组

css - 将 DIV 堆叠在一起?

javascript - 如何在 Javascript 事件中检查 Chrome 中仅存在于 DOM 中的元素

javascript - 检查一个或两个输入字段是否为空、值是否为 0 或负数

javascript - 我们可以用ctrl + enter代替“textarea” shift + enter行为吗?

jquery - 为什么我的 console.logs 没有被写入?

javascript - 为什么 HTML 页面的类为 ‘javascript’ ?

html - 页眉与正文不在一条直线上

使用 JSON 将 JavaScript 转为 Java

javascript - 为什么我的 html 代码没有调用我的 javascript 代码?