JSdiddleのページですここで作業してます
http://jsfiddle.net/MrTK1230/xeq9oau9/8/
javascriptで検索した文字列をハイライトするコードを書きたいのですがエラーがでてしまいます。
formを追加した途端このエラーがでたのですが、どこが間違っているのかわかりません。分かる方お願いします。
↓がエラーです。
VM11434:90 Uncaught TypeError: $(...) is not a function
CSS
1.container p{ 2 line-height: 1.6; 3} 4 5 6.faq .highlight{ 7 background-color: #fffd77; 8} 9 10
JavaScript
1$(function(){ 2 var $container = $('.faq'); 3 if(!$container.length) return true; 4 var $form = $(".form:first"); 5 var $input = $(".textarea:first"); 6 var $lis = $container.find('> ul > li'); 7 var $item; 8 var li_arr = []; 9 10 $lis.each(function(){ 11 li_arr.push($(this).text().replace(/\s{2,}/g, ' ').toLowerCase()); 12 }); 13 14 $form.on("submit", function(e){ 15 $lis.each(function(){ 16 $item = $( this ); 17 $item.html( $item.html().replace(/<span class="highlight">([^<]+)<\/span>/gi, '$1')); 18 }); 19 20 var searchVal = $.trim($input.val()).toLowerCase(); 21 if(searchVal.length){ 22 for(var i in li_arr){ 23 $item = $lis.eq(i); 24 if( li_arr[i].indexOf(searchVal) != -1) 25 $item.removeClass('is-hidden').html($item.html().replace(new RegExp(searchVal+'(?!([^<]+)?>)', 'gi'), '<span class="highlight">$&</span>')); 26 27 } 28 } 29 30 }); 31})(); 32
HTML
1<div class="container" role="main"> 2 <div class="faq"> 3 <form name="form1" method="POST" class="form"> 4 <input type="text" name="word" value="aaa" class="textarea"/> 5 <input type="submit" value="送信" /> 6</form> 7 8 <ul> 9 <li id="faq-1"> 10 <h2>東京</h2> 11 <div> 12 <p>東京は、江戸幕府の所在地の江戸を1868年9月に改称したものである。 13「東京」という名称を用いる構想は江戸時代後期の佐藤信淵の書にあり、大久保利通がその書の影響を受けつつ「東京」とすることを建言した。 141869年2月11日1878年(明治11年)に府制を施行[1]、「東京府」となった。</p> 15 </div> 16 </li> 17 <li id="faq-2"> 18 <h2>大阪</h2> 19 <div> 20 <p>「大坂」という地名は、元は大和川と淀川(現在の大川)に間に南北に横たわる上町台地の北端辺りを指し、古くは摂津国東成郡に属した。</p> 21 </div> 22 </li> 23 <li id="faq-3"> 24 <h2>京都</h2> 25 <div> 26 <p>東アジアでは古来、歴史的に「天子の住む都」「首都」を意味する普通名詞として京(きょう)、京師(けいし)が多く使用されていた。西晋時代に世宗(司馬師)の諱である「師」の文字を避けて京都(けいと)と言うようになり、以後は京、京師、京都などの呼び名が用いられた。</p> 27 </div> 28 </li> 29 30 </ul> 31 <div class="faq__notfound"><p>キーワードが見当たりません。他のキーワードをお試し下さい</p></div> 32 </div> 33 34</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/21 12:08