주어진 색인의 요소에서 시작하는 동일한 부모 div의 첫 번째 자식을 탐색하려고합니다.jQuery - 같은 부모 div의 첫 번째 자식 div로 이동하는 방법
"word"div가 "letter"div 주위를 둘러 쌉니다.
HTML :
var decoder = {};
decoder.firstEmptyIndexPrevious;
var findPrevStart = function(startIndex){
//if startIndex is not defined, set it to index of current cursor position
if (!startIndex){
startIndex = $('div.select').parents('div.character').first().index('div.character');
}
//index of first letter in word before the position of the start index. should return 5 in this example
decoder.firstEmptyIndexPrevious = $('div.character:lt(' + startIndex + ')').last().siblings('div.word div.character').first().index();
//decoder.firstEmptyIndexPrevious = $('div.character:lt(' + startIndex + ')').last().parent().children().first().index();
console.log('startIndex = ' + startIndex);
console.log('decoder.firstEmptyIndexPrevious = ' + decoder.firstEmptyIndexPrevious);
}
$(document).ready(function() {
findPrevStart();
});
는 기본적으로 decoder.firstEmptyIndexPrevious에, 나는 (즉시 선택 요소가 표시되는 위치를 이전 단어의 첫 번째 문자의 인덱스를 얻으려면 :
<div class="row">
<div class="twelve columns">
<div class="word">
<div class="character">
<div class="number">
4
</div>
<div class="options">
GHI
</div>
<div class="letter">H</div>
</div>
<div class="character">
<div class="number">
3
</div>
<div class="options">
DEF
</div>
<div class="letter">E</div>
</div>
<div class="character">
<div class="number">
5
</div>
<div class="options">
JKL
</div>
<div class="letter">L</div>
</div>
<div class="character">
<div class="number">
5
</div>
<div class="options">
JKL
</div>
<div class="letter">L</div>
</div>
<div class="character">
<div class="number">
6
</div>
<div class="options">
MNO
</div>
<div class="letter">O</div>
</div>
</div>
<div class="word">
<div class="character">
<div class="number">
4
</div>
<div class="options">
GHI
</div>
<div class="letter">I</div>
</div>
<div class="character">
<div class="number">
7
</div>
<div class="options">
PQRS
</div>
<div class="letter">S</div>
</div>
</div>
<div class="character">
<div class="number">
4
</div>
<div class="options">
GHI
</div>
<div class="letter"></div>
<div class="select">
<select class="word-options">
<option value="">Select a word</option>
<option value="IT">IT</option>
</select>
</div>
</div>
<div class="character">
<div class="number">
8
</div>
<div class="options">
TUV
</div>
<div class="letter"></div>
</div>
<div class="character">
<div class="number">
7
</div>
<div class="options">
PQRS
</div>
<div class="letter"></div>
</div>
<div class="character">
<div class="number">
3
</div>
<div class="options">
DEF
</div>
<div class="letter"></div>
</div>
<div class="character">
<div class="number">
2
</div>
<div class="options">
ABC
</div>
<div class="letter"></div>
</div>
</div>
</div>
jQuery를 커서와 같이 동적으로 DOM을 통해 이동합니다). startIndex는 예상대로 7을 반환하지만 decoder.firstEmptyIndexPrevious는 어디에서 실행 되든 상관없이 0을 반환합니다. 이는 약간 다른 접근 방식을 사용하여 활성 행과 주석 행 모두에서 발생합니다. 이 예제에서는 5를 반환해야합니다. 무엇이 잘못되었는지 확신하지 못합니다.
JSFiddle : http://jsfiddle.net/mrengy/h2DZG/1/
당신이 당신의 예를 단순화하거나 정확히 당신이 원하는 설명 : 여기에
코드인가? 숫자로 말하면서 당신이 원하는 것을 실제로 물어 보지 않으면 혼란 스럽습니다. –@Vega 이전 단락에서 내가 뭘 찾고 있었는지 물어 보았습니다.하지만 방금 텍스트 순서를 옮겨서 마지막으로 넣었습니다. –
인수가없는'index()'는 부모 내에있는 요소의 인덱스를 반환합니다. 선택 항목은'.character' DIV와'.word' 상위 항목의 첫 번째 하위 항목 인'GHI' 옵션을 사용하므로 색인이 0입니다. – Barmar