Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Элементы внутри this (https://javascript.ru/forum/jquery/22504-ehlementy-vnutri.html)

Skyman 23.10.2011 00:19

Элементы внутри this
 
<ul class="st_main">
<li><a href="#" id="n">test</a></li>
<li><a href="#" id="n">test</a></li>
<li><a href="#" id="n">test</a></li>
</ul>


Написал скрипт, который при клике по li делает кое-какое действие.
Соответственно $(this) будет вести на активный li.

Но как сделать, чтобы через $(this) можно было обратиться к элементу "a"?

Как-то так $(this).$('a')... , но чтобы работало :)

Триви 23.10.2011 00:22

Цитата:

Сообщение от Skyman (Сообщение 132319)
Но как сделать, чтобы через $(this) можно было обратиться к элементу "a"?

Очень просто: $(this + ' > a')

Skyman 23.10.2011 00:33

Что-то не работает
$(function () {
	$('.st_main li').click(function() {
		$(this + ' > a').attr('class', 'active');
		$(this + ' > a').css('margin-left', '100px');
	});
});

Триви 23.10.2011 00:37

А так?
var li = $(this);
$(li + ' > a')

zebra 23.10.2011 00:40

$(this).children('a')

Skyman 23.10.2011 00:44

Триви, все равно не работает

zebra, спасибо, работает)

B@rmaley.e><e 23.10.2011 10:56

Цитата:

Сообщение от Триви
$(li + ' > a')

Складывать объект и строку — отличная идея!

FINoM 23.10.2011 20:48

$('a', this)

ksa 23.10.2011 20:57

Цитата:

Сообщение от FINoM (Сообщение 132467)
$('a', this)

Это что оно делать будет?

Nekromancer 23.10.2011 21:29

Цитата:

Сообщение от ksa (Сообщение 132468)
Это что оно делать будет?

Тоже самое, что
$(this).find('a');

FINoM 24.10.2011 06:02

Цитата:

Сообщение от ksa
Это что оно делать будет?

Это подмена контекста. Если писать так:
$('a')
то это то же самое, что и
$('a', document)
В случае
$('a',  this)
поиск будет осуществляться в this (this.getElementsByTagName('a')).

ksa 24.10.2011 08:19

Ясно...

Триви 24.10.2011 11:48

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 132350)
Складывать объект и строку — отличная идея!

я пока в jq слабо))
насколько я понял в селектор всегда передается строка,
которая затем парсится jq и преобразуется в объекты?
так?

DjDiablo 24.10.2011 13:37

Цитата:

насколько я понял в селектор всегда передается строка,
которая затем парсится jq и преобразуется в объекты?
так?
не всегда
$(this).append("привет"); // this это ведь не строка, ровно как не строка и document

Вообще наверно не парсер, а наиболее коректное название, простой интерпретатор. Который анализирует и тут же выполняет.

Что касается терминов.
парсер - это Синтаксический анализатор. На выходе мы обычно получаем некоторую формализованную структуру данных описывающую синтаксис. Обычно это дерево. А есть ещё лексический, и семантический анализатор. Морфологического для формальных языков вот только почему то нет :)

У языка запросов структура помоему вообще линейная. Нет ни ветвлений, ни группировки команды. Каждая команда помоему модифицирует результат деятельности предыдущей.
Не знаю как работает интерпритатор в jquyery но думаю как-то так. Распарсили строку в массив при помощи регулярки, а затем по очереди берём ячейки, определяем что это в ней за команда и выполняем привязанную к селектору функцию, которая модифицирует результирующий массив. Итоговый массив нам по результату и вернут.

А вообще надо посмотреть на досуге как механизьм селекторов устроен в jquery. Любопытно стало.

Триви 24.10.2011 15:33

DjDiablo,
Да это я в дороге с мобы писал впопыхах ))
Сейчас уже на месте поразмыслил, всё стало на свои места..


Часовой пояс GMT +3, время: 17:50.