2017-02-13 55 views
0

我有一個包含大量鏈接的頁面。返回按鈕上的所有鏈接點擊

我已經集成了用戶在鏈接名稱輸入搜索框,當他們按下按鈕「搜索」,它返回包含用戶鍵入的內容的所有鏈接:

這裏是一款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(); 
     } 
    }); 
}); 

現在我也有一個明確的按鈕..和當用戶點擊該按鈕,我想所有的滑塊,頭,UL的,李時珍,並鏈接到不需要刷新頁面返回。

這裏是我迄今爲止該按鈕:


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

所以只是作爲一個例子..如果我是用戶和Document 1輸入到搜索框中..並點擊搜索,它會返回標題First Header,下面將是Document 1

現在,如果我打清除搜索..這將返回我的一切我h4元素,但沒有它們下面,除了用Document 1下的First Header元素。所以它保持了原有的搜索,只是返回休息在h4元素..

所以我的問題是我怎麼就明確搜索按鈕的點擊返回的一切嗎?

+0

'$(本).siblings ('h4')。show()' – TricksfortheWeb

+0

@Ticks.comheWeb這仍然只返回'h4'元素..沒有什麼在它們下面。只有'h4'元素在它們下面是包含用戶搜索的鏈接的'h4'元素。 –

+0

將h4和div的div封裝在div中,然後切換包裝div。 – TricksfortheWeb

回答

0

我已經想通了這一點,使用的是什麼我已經有:

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

這將在按鍵或粘貼上實時過濾。當用戶在搜索中輸入東西時,如果鏈接包含文本,它將隱藏不包含文本的鏈接,並顯示鏈接。隨着值的變化,它將根據搜索值顯示或隱藏。

編輯:搜索現在勢必按鈕移到

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>

+0

我想返回一切按鈕點擊..我不需要實時。我喜歡你的解決方案,但它不是我正在尋找的。 –

+0

@BviLLe_Kid哦,不用擔心。我編輯帖子,使其現在綁定到搜索按鈕,並且它還具有用於清晰功能的綁定。你是否希望讓它隱藏標題而沒有結果? –

+0

我發佈了我的答案。我已經明白了這一點。感謝您的幫助。 –