Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.09.2015, 14:10
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

jQuery ваще не знаю, поэтому перепишешь правильно =).
function adjacentItems(index){
    var $parent = $('.wrapper'),
        $child = $('.child');
    
    var count = $child.length;
    
    // сколько элементов в линии
    var xItems = Math.floor($parent.width() / $child.width());
    
    // шаг вправо
	var $right = null,
        right = index + 1;
    
    if (right <= count && right % xItems !== 0) {
    	$right = $child.eq(right)
    }
    
    // шаг влево
	var $left = null,
        left = index - 1;
    
    if (left >= 0 && index % xItems !== 0) {
    	$left = $child.eq(left)
    }
    
    // шаг вверх
	var $top = null,
        top = index - xItems;
    
    if (top >= 0 && index % xItems !== 0) {
    	$top = $child.eq(top)
    }
    
    // шаг вниз
	var $bottom = null,
        bottom = index + xItems;
    
    if (bottom <= count && bottom - 1 % xItems !== 0) {
    	$bottom = $child.eq(bottom)
    }
    
    // массив элементов
    var data = [];
    
    // собственно, если он есть, то записываем в массив.
    if ($right) {
    	data.push($right);
    }
    if ($left) {
    	data.push($left);
    }
    if ($top) {
    	data.push($top);
    }
    if (bottom) {
    	data.push($bottom);
    }
    return data;
}

$('.wrapper').on('click', '.child', function() {
        // получаем список эелемнтов
	var $items = adjacentItems($(this).index());
    // перебираем массив
    $items.forEach(function($item){
    	$item.css('background', 'yellow');
    });
});


p.s я тут убрал ввод с prompt, добавишь.
http://jsfiddle.net/73gLc3ap/4/

p.s А почему не сделаешь используя матрицу? Я про

data[x][y]


Было бы проще искать элемементы

Последний раз редактировалось Lemme, 03.09.2015 в 15:01.
Ответить с цитированием
  #12 (permalink)  
Старый 03.09.2015, 17:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

falkone,

Ответить с цитированием
  #13 (permalink)  
Старый 03.09.2015, 20:07
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Сообщение от рони Посмотреть сообщение
falkone,

Красиво
Вот примерно такого результата хочу добиться и я, положительные сдвиги уже есть)
Ответить с цитированием
  #14 (permalink)  
Старый 03.09.2015, 20:32
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

falkone, ищи "волновой алгоритм поиска кратчайшего пути" =)
И от туда черпай не поиск пути, а способ запуска - той самой волны=)

Последний раз редактировалось Lemme, 03.09.2015 в 21:29.
Ответить с цитированием
  #15 (permalink)  
Старый 03.09.2015, 20:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

nerv_,
давал ссылку PathFinding
тут все виды волн
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор элементов Sherminator Events/DOM/Window 1 26.05.2014 23:25
Как удалить класс у соседних элементов housewm Events/DOM/Window 4 11.03.2014 13:29
Удалить и вернуть массив из удаленных элементов splice Paulyyy Общие вопросы Javascript 15 29.05.2013 15:36
Перебор дерева элементов - не хочет работать скрипт... caca0 Javascript под браузер 7 18.05.2012 20:07
Перебор DOM элементов DjDiablo jQuery 3 04.02.2011 16:26