2017-06-30 7 views
-2

jqueryでajax検索バーを作成しようとしています.1つの場所で打たれました.1つの大きなdiv要素の中に動的div要素を作成しました.json応答と共に作成されたdivを意味します。ユーザーが何か入力したらdiv要素を横断したいキーの上向き矢印と下向き矢印を介して横断する必要があります。jQueryのdiv要素内のdiv要素をどのようにトラバースするのですか?

<div class="comment"> 
     <div class="single" > 
      //this div is dynamically created with the information 
     </div> 
</div> 

div要素内の項目をキーアップとキーダウンのヘルプでハイライトしたいとします。 可能な方法は何でしょうか。私は2〜3の方法を試しましたが、それは有用ではありません。ここでEDIT

は、私が

$(document).ready(function(){ $('#inputText').on('keydown',function(e){ var $current=$('.comment>.single').first(); $current.css('background-color','yellow'); if(e.keyCode==40){ var $nextDiv; if($current.next().size==0){ $nextDiv=$('.comment>.single').first(); } else { $nextDiv=$current.next(); } $current.css('background-color',''); $nextDiv.css('background-color','yellow'); $current=$nextDiv; } }); }); 

は、あなたが適切にあなたの現在のdivと次のdivを設定されていません

+2

あなたが試した2〜3の方法は何ですか? –

+0

私はフィルター、最初の機能を使用しようとしました。しかし、私は簡単に2divと残りのdiv要素を強調表示することができますが、最初のdivで打たれたときに、ユーザーが入力ボックスから1回押したときに、最初に強調表示する必要があります。 – Andrew

+0

あなたのコードをここに投稿してください...あなたは何をしようとしているのか分からずに人々を助けることができません。 –

答えて

0

ご協力いただきありがとうございます試してみましたが何もあなたが示されていないですあなたのコードの下矢印

私はあなたのために置いたjsFiddleです

https://jsfiddle.net/fxabnk4o/1/

はまた、あなたのdivのいずれかが、黄色の背景色を持っているかどうかを確認し、それに応じて

i「は.single」のクラスを持つすべての要素をループしているを横断する必要があるよりよいがあります矢印に基づいて、この

var a = $('.single'); 
     for(var i = 0; i < a.length; i++) 
     { 
     if($(a[i]).css('backgroundColor') == "rgb(255, 255, 0)") 
     { 
     isFirst = false; 
      $current= $(a[i]); 
      break; 
     } 
     else{ 
     isFirst = true; 
     $current = $('.comment > .single').first(); 
     } 
     } 

、その後を行う方法は、選択し、次または前の要素に

if($current.next().size==0){ 
      $nextDiv=$('.comment>.single').first(); 
      } 
      if(!isFirst){ 
      $nextDiv=$current.next(); 
      $current.css('background-color',''); 
      $nextDiv.css('background-color','yellow'); 
      $current=$nextDiv; 
      } 
      else 
      { 
      $current.css('background-color','yellow'); 
      } 
を押します

var $nextDiv; 
     if($current.prev().size==0){ 
      $nextDiv=$('.comment>.single').first(); 
      } 
      if(!isFirst){ 
      $nextDiv=$current.prev(); 
      $current.css('background-color',''); 
      $nextDiv.css('background-color','yellow'); 
      $current=$nextDiv; 
      } 
      else 
      { 
      $current.css('background-color','yellow'); 
      } 
+0

ありがとう。 – Andrew

+0

これが正しいと判断した場合は、回答としてマークすることができます。 –

+0

私は1つの疑問を持っています(あなたの場合)4キーの後に5番目のキーで何も強調表示されていない代わりに、最初のキー(最初のdiv)を強調表示する必要があります。 – Andrew

0
$('input', $('#comment')).each(function() { 

$('input', $('#single')).each(function() { 

    console.log($(this)); //log every element found to console output 
}); 

    console.log($(this)); //log every element found to console output 
}); 
+0

私はすべての情報にしたくない。ちょうどユーザーがキーを押したときに最も近いdivを強調表示する必要がある。(下キーが押されたときだけハイライト表示) – Andrew

関連する問題