前回に引き続き、キーワード検索について修正しています。
Tableタグ内でキーワード検索はできたのですが、HTMLのレイアウトを変更して、掲載したhtmlの中でキーワード検索が可能かどうか教えていただけますでしょうか。
jQueryは、htmlをTableで作成した時のものとなります。
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <title>Q and A</title> 5 <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 7 <meta http-equiv="Content-Style-Type" content="text/css"> 8 <link rel="stylesheet" type="text/css" href="style.css"> 9 <link rel="stylesheet" type="text/css" href="css/css_qa.css"> 10 <script type="text/javascript" src="http://code.jquery.com/jquery-2.2.3.min.js"></script> 11 <script src="js/jjquery.quicksearch1.js" type="text/javascript"> 12 </script> 13 14 </head> 15 <body> 16 <div id="contents"> 17 <div id="main"> 18 19 <p> <input type="text" id="search" value=" "> <input type="button" value="and検索" id="button2" id="btn-onoff"> <input type="button" value="すべて表示" id="button3"> 20 <label><input type="checkbox" id="check1">ハイライト</label> 21 22 23<div class="cp_qa"> 24<div class="cp_actab"> 25 26<input id="cp_tabfour011" type="checkbox" name="tabs"> 27<label for="cp_tabfour011">Q:ああああaa</label> 28 <div class="cp_actab-content"> 29 <p>A:いいいいいい</p> 30 </div> 31</div> 32<div class="cp_actab"> 33<input id="cp_tabfour012" type="checkbox" name="tabs"> 34<label for="cp_tabfour012">Q:ああbb</label> 35 <div class="cp_actab-content"> 36 <p>A:ううううう</p> 37 </div> 38</div> 39<div class="cp_actab"> 40<input id="cp_tabfour013" type="checkbox" name="tabs"> 41<label for="cp_tabfour013">Q:いいいいcc</label> 42 <div class="cp_actab-content"> 43 <p>A:ええええええ</p> 44 </div> 45 46</div> 47</div> 48</body>
jQuery
1$(function() { 2 $('#button1').on("click", function() { 3 var re = new RegExp($('#search').val().trim().replace(/ +/, "|")); 4 $('div.cp_actab').each(function() { 5 $(this).toggle($(this).find('p,label').filter(function() { 6 return $(this).text().match(re) ? true : false; 7 }).length > 0); 8 }); 9 }); 10 $('#button2').on("click", function() { 11 $('div.cp_actab').each(function() { 12 var tr = $(this); 13 var re = $('#search').val().trim().split(/ +/); 14 var flg = re.map(function(x) { 15 return div.has($('div').filter(function() { 16 return $(this).text().match(new RegExp(x)); 17 })).get(); 18 }).filter(function(x) { 19 return x.length > 0; 20 }).length == re.length; 21 div.toggle(flg); 22 }); 23 }); 24 $('#button3').on("click", function() { 25 $('$('div.cp_actab').show(); 26 }); 27});
回答2件
あなたの回答
tips
プレビュー