Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу здесь за 20 тыс руб в месяц! alarforum@yandex.ru


Ответ
 
Опции темы
Старый 22.09.2011, 16:42   #1
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию JQuery селектор, Как выбрать конкретный wrapper для блока?

как добраться к элементу класса B, кликая по элементу класса А через wrapper li? Объясняю! Дан элемент списка li, в котором находятся 2 блока (не важно, кнопки это или дивы, что угодно может быть), допустим 1-ый блок имеет класс А, 2-й класс B, единственное что их объединяет это wrapper li, какой селектор в данном случае можно применить?

Код:
<ul>
 <li>
  <div class="A">1</div>
  <div class="B">2</div>
 </li>
</ul>
! обычной селекцией тут наврядли поможешь, так как классы А и B могут находится где угодно и как угодно, могут быть еще в контейнерах, неогранниченой вложенности, т.е. выход только 1, через обвертывающий их wrapper li

это должно быть примерно так:

Код:
$('.A').click(function(){
 var m =  find(A wrapper = li).attr("id"); // вот тут нужна точность и далее уже легко
  $('#id').find('.B').append("Hellow World!"); // по найденому ид-шнику тега li
 });
AlienNation вне форума Ответить с цитированием
Старый 22.09.2011, 16:53   #2
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

коли количество блоков класса A = кол-ву блоков класса B то можно воспользоваться банальным индексом

Код:
$('.A').click(function(){
var indexx = $('.A').index(this);
$('.B').eq(indexx).text('я тут');
});
полный код
Код HTML:
<html>
<head>
<script language="JavaScript" src="http://jqbook.narod.ru/page/primer/jquery-1.2.6.js"></script>
<script>
onload=function(){
$('.A').click(function(){
var indexx = $('.A').index(this);
$('.B').eq(indexx).text('я тут');
});
}
</script>
</head>
<body>
<ul>
 <li>
  <div class="A">1</div>
  <div class="B">2</div>
 </li>
</ul>
<ul>
 <li>
  <div class="A">1</div>
  <div class="B">2</div>
 </li>
</ul>

Последний раз редактировалось Lesha; 22.09.2011 в 16:57.
Lesha вне форума Ответить с цитированием
Старый 22.09.2011, 16:57   #3
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Lesha Посмотреть сообщение
можно воспользоваться банальным индексом
банальный индекс тут наврядли прокатит, потом будет много возни если какой-то блок добавится/убавится, я уже проходил через это.
AlienNation вне форума Ответить с цитированием
Старый 22.09.2011, 17:01   #4
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

"банальный индекс v2.0"

Код HTML:
<html>
<head>
<script language="JavaScript" src="http://jqbook.narod.ru/page/primer/jquery-1.2.6.js"></script>
<script>
onload=function(){
$('ul li div.A').click(function(){
var indexx = $('ul li div.A').index(this);
$('ul li div.B').eq(indexx).text('я тут');
});
}
</script>
<div class="A">1</div>
<div class="A">1</div>
<div class="A">1</div>
<div class="B">2</div>
<ul>
 <li>
  <div class="A">нажми меня</div>
  <div class="B">2</div>
 </li>
</ul>
<div class="A">1</div>
<div class="A">1</div>
<div class="A">1</div>
<div class="B">2</div>
<ul>
 <li>
  <div class="A">нажми меня</div>
  <div class="B">2</div>
 </li>
</ul>
<div class="A">1</div>
<div class="A">1</div>
<div class="A">1</div>
<div class="B">2</div>
Lesha вне форума Ответить с цитированием
Старый 22.09.2011, 17:17   #5
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

спасибо, пока работает!
AlienNation вне форума Ответить с цитированием
Старый 22.09.2011, 18:09   #6
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

кстати, а чем это

Цитата:
$('.A').click(funciton () {
$(this).closest('li').find('.B').ap pend('Hellow World!')
});
хуже? (ответили на другом форуме, может есть разница?)
AlienNation вне форума Ответить с цитированием
Старый 23.09.2011, 14:44   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от AlienNation Посмотреть сообщение
кстати, а чем это хуже? (ответили на другом форуме, может есть разница?)
Это лучше, так как идем от активного элемента вверх по дом и внутри родителя уже ищем нужный селектор. Работает быстрее, чем перебор всего массива классов и вероятность появления ошибки стремится к нулю.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 23.09.2011, 16:56   #8
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

для JS понятие быстроты или небыстроты отсутствует вовсе (за исключением бесконечных циклов), ввиду того что его обрабатывает не сервер а клиент, а поскольку у клиента свой процессор то тут очень огромный потенциал для "загрузки".
Lesha вне форума Ответить с цитированием
Старый 26.09.2011, 07:53   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Lesha Посмотреть сообщение
для JS понятие быстроты или небыстроты отсутствует вовсе (за исключением бесконечных циклов), ввиду того что его обрабатывает не сервер а клиент, а поскольку у клиента свой процессор то тут очень огромный потенциал для "загрузки".
В том то и дело, что это не серверный скрипт и вы не знаете, какой потенциал для "загрузки" у клиента. Купите подержанный компьютер за 500 рублей и проверьте на нем, на ie6/7. Оперативная память забивается быстро, при обилии скриптов это критично - повесить клиентский компьютер крайне легко и крайне неприятно для посетителя - после такого люди отключают нахрен js.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 26.09.2011, 09:29   #10
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Цитата:
ie6/7 , повесить клиентский компьютер крайне легко
зачем же в такие крайности бросаться?
Lesha вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выбрать оптимальный формат для графического файла? artemavd Общие вопросы Delphi 11 03.12.2010 03:39
JS or jQuery: Выбрать все тэги с одним классом InCun JavaScript, Ajax 1 21.02.2010 14:01
Как определить время выполнения конкретный функции? Alex Cones Общие вопросы Delphi 8 24.09.2009 10:42
как получить конкретный объект DOM из нескольких одинаковых Doda JavaScript, Ajax 3 18.05.2009 12:25


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840