Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2011, 15:19
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Массив в массиве
Здравствуйте. Простите заранее, если то что я щас напишу покажется Вам извращением. Другого пути реализации я не придумал, а навигация по DOM с такой разметкой - бессмысленна и беспощадна.



Разметка:
<div class="q1">
    <div class="w1"></div>
    <div class="w1"></div>
    <div class="w1"></div>
    <div class="w1"></div>
</div>
<div class="q2">
    <div class="w2">
        <div class="e1">
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
        </div>
        <div class="e2">
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
        </div>
    </div>
    <div class="w2">
        <div class="e1">
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
        </div>
        <div class="e2">
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
        </div>
    </div>
    <div class="w2">
        <div class="e1">
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
        </div>
        <div class="e2">
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
        </div>
    </div>
    <div class="w2">
        <div class="e1">
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
        </div>
        <div class="e2">
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
        </div>
    </div>
</div>


Скрипт:
$(document).ready(function(){
    var q1 = (".q1 > w1");
    var q2 = (".q2 > w2");
    var e1 = (".e1 > r1");
    var e2 = (".e2 > r2");
    q2.hide();
    e2.hide();
    q1.click(function(){
        var a = q1.index(this);
        q2.eq(a).show().siblings().hide();
        // здесь по идее должен быть ответ на вопрос, но ни .eq(0) ни .filter(":first") мне не помогли.
    });
});


Уважаемые знатоки, внимание, вопрос:
Каким образом мне вытащить первый элемент массива e2, который в свою очередь вытаскивается из массива q2, если ни eq() ни filter() не помогли?
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2011, 15:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<div class="e2">
    <div>this is first child</div>
    <div>this is last child</div>
</div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
  alert( $(".e2 div:first-child").html() );
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2011, 16:02
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Viral
Каким образом мне вытащить первый элемент массива e2, который в свою очередь вытаскивается из массива q2
Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function Go() {
	$('.q2 .e2 > div:first').css('color','red');
};
</script>
</head>
<body>
<div class="q1">
    <div class="w1"></div>
    <div class="w1"></div>
    <div class="w1"></div>
    <div class="w1"></div>
</div>
<div class="q2">
    <div class="w2">
        <div class="e1">
            <div class="r1">1</div>
            <div class="r1">2</div>
            <div class="r1">3</div>
            <div class="r1">4</div>
        </div>
        <div class="e2">
            <div class="r2">Test</div>
            <div class="r2">1</div>
            <div class="r2">2</div>
            <div class="r2">3</div>
        </div>
    </div>
    <div class="w2">
        <div class="e1">
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
        </div>
        <div class="e2">
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
        </div>
    </div>
    <div class="w2">
        <div class="e1">
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
        </div>
        <div class="e2">
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
        </div>
    </div>
    <div class="w2">
        <div class="e1">
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
            <div class="r1"></div>
        </div>
        <div class="e2">
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
            <div class="r2"></div>
        </div>
    </div>
</div>
<input type='button' value='Go' onclick='Go()' />
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2011, 16:04
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

ksa, ну ты то хоть не издевайся)
естественно должна быть возможность производить действие над любым из элементов массива... а их там и 50 может быть... эта разметка исключительно как пример.

Подскажи, пожалуйста, статейку, где описаны способы работы с многомерными массивами посредством jQuery.
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2011, 16:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

ksa,
div:first
лучше не юзать псевдокласс first это не стандартный псевдокласс и jQuery запускает свой собственный поиск элементов, что затормаживает работу скрипта. Поэтому лучше юзать стандартный first-child он поддерживается querySelector и тем самым ускоряет процесс поиска.
Ответить с цитированием
  #6 (permalink)  
Старый 07.12.2011, 16:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от devote
лучше юзать стандартный first-child
Эва! Учту на будущее...

Я что прочитал...
http://jquery-docs.ru/Selectors/
То и использую...
Ответить с цитированием
  #7 (permalink)  
Старый 07.12.2011, 16:15
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Я когда сюда постил не подумал о существовании многомерных массивов.
Извините за флуд и уг. Все нашел, во всем разобрался. Спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 07.12.2011, 16:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Viral
должна быть возможность производить действие над любым из элементов массива
Так я х/з чего там тебе нужно "производить"...

Сообщение от Viral
Подскажи, пожалуйста, статейку
так вот он, весь инструментарий...
http://jquery-docs.ru/Selectors/
и оригинал
http://api.jquery.com/category/selectors/
Ответить с цитированием
  #9 (permalink)  
Старый 07.12.2011, 16:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от ksa Посмотреть сообщение
Эва! Учту на будущее...

Я что прочитал...
http://jquery-docs.ru/Selectors/
То и использую...
Я было дело изучал jQuery изнутри. Дело в том что jQuery испульзкет движок селекторов Sizzle, который является второстепенным, если стандартный встроенный в браузер querySelectorAll не выдает результатов, то jQuery запускает этот самый Sizzle, по спецификации querySelectorAll не поддерживает обычный first и многие другие псевдоклассы что юзает jQuery поэтому при попытки отдать querySelectorAll подобный запрос приводит к пустому результату, так как селектор ошибочен, что в свою очередь заставляет jQuery запускать внутренний поиск.
Ответить с цитированием
  #10 (permalink)  
Старый 07.12.2011, 16:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от devote
Я было дело изучал jQuery изнутри.
Да я верю, верю...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать массив не содержащие данные другого масива KamalovRadik Общие вопросы Javascript 1 05.09.2011 03:30
как запихнуть в массив оператор ? mitiya Общие вопросы Javascript 2 09.02.2011 18:57
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30
видимость предка в массиве scuter Общие вопросы Javascript 4 13.08.2008 20:16