Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 30.10.2013, 16:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Купэ,
на всякий случай
Сообщение от Купэ
"change"
для ваших селектов никогда несработает
Ответить с цитированием
  #12 (permalink)  
Старый 30.10.2013, 16:45
Интересующийся
Отправить личное сообщение для Купэ Посмотреть профиль Найти все сообщения от Купэ
 
Регистрация: 23.03.2011
Сообщений: 26

Сообщение от ksa Посмотреть сообщение
У ДОМ-элемента есть свойство parentNode...


У ДОМ-элемента есть свойство nextSibling... В jQuery есть метод next()...
В коде который я привел выше написал

var main_container =$(this).parent('.cont'); -выбираем родителя нажатого селекта т.е. это будет один из дивов с классом .cont



Надо у селектора $("#select_"+i), определить блок- родитель и у него добавить атрибут

Подобная конструкция не работает

("#select_"+i).parent(main_container).prop("disabled",true);
Ответить с цитированием
  #13 (permalink)  
Старый 30.10.2013, 16:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Купэ
В коде который я привел выше написал

var main_container =$(this).parent('.cont'); -выбираем родителя нажатого селекта т.е. это будет один из дивов с классом .cont
В твоем случае
Функция next()
Достаточно написать

$(this).parent();
// или
$(this.parentNode);


Сообщение от Купэ
("#select_"+i).parent(main_container).prop("disabled",true);
Что ты этим пытаешся сделать?

Последний раз редактировалось ksa, 30.10.2013 в 16:52.
Ответить с цитированием
  #14 (permalink)  
Старый 30.10.2013, 16:50
Интересующийся
Отправить личное сообщение для Купэ Посмотреть профиль Найти все сообщения от Купэ
 
Регистрация: 23.03.2011
Сообщений: 26

Сделал вот так правильно было написать:

$(main_container).children("#select_"+i).prop("disabled", true);
Ответить с цитированием
  #15 (permalink)  
Старый 30.10.2013, 16:53
Интересующийся
Отправить личное сообщение для Купэ Посмотреть профиль Найти все сообщения от Купэ
 
Регистрация: 23.03.2011
Сообщений: 26

prop("disabled",true); - атрибут disabled активирует, кстати нормально работает, можно и так .attr("disabled","disabled");
Ответить с цитированием
  #16 (permalink)  
Старый 30.10.2013, 16:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Купэ
определить в каком контейнере <div> он находится и перебрать следующие за ним селекты
Вариант...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>

</head>

<body>
 <div class="cont">
   <select id="select_1">
     <option>1</option>
     <option>test</option>
   </select>

   <select id="select_2">
     <option>1</option>
     <option>test</option>
   </select>

   <select id="select_3">
     <option>1</option>
     <option>test</option>
   </select>

   <select id="select_4">
     <option>1</option>
     <option>test</option>
   </select>

</div>

<div class="cont">
   <select id="select_5">
     <option>2</option>
     <option>test</option>
   </select>

   <select id="select_6">
     <option>3</option>
     <option>test</option>
   </select>

   <select id="select_7">
     <option>4</option>
     <option>test</option>
   </select>

    <select id="select_8">
     <option>5</option>
     <option>test</option>
   </select>
</div>

<script>
   $("body").on("change","select",function(){
   var main_container = $(this).parents('.cont');
   var count_select = $("select[id^='select_']", main_container);
   var i = count_select.index(this);
   // вариант без перебора
   count_select.slice(++i).prop("disabled", true)
   // вариант с перебором
   //count_select.each(function(indx, element){
   //if(indx > i) $(element).prop("disabled", true)
   // })
  })
</script>
</body>

</html>
Ответить с цитированием
  #17 (permalink)  
Старый 30.10.2013, 20:57
Интересующийся
Отправить личное сообщение для Купэ Посмотреть профиль Найти все сообщения от Купэ
 
Регистрация: 23.03.2011
Сообщений: 26

У меня так не пойдет потому что в каждом контейнере id селектов одинаковые select_1 select_2, потому что эти списки соответствуют уровням вложенности каталога т.е. select_уровень вложенности,
Ответить с цитированием
  #18 (permalink)  
Старый 30.10.2013, 21:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Купэ
У меня так не пойдет потому что в каждом контейнере id селектов одинаковые select_1 select_2
да хоть все id сделайте одинаковыми код выше будет работать
Ответить с цитированием
  #19 (permalink)  
Старый 31.10.2013, 08:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Купэ
в каждом контейнере id селектов одинаковые
ИД должен быть уникален на странице...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое функция callback() ? iNfantry Общие вопросы Javascript 13 19.01.2013 14:28
функция и несуществующий id Ankh Элементы интерфейса 4 10.02.2012 23:49
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 19:00
Универсальная функция Ajax запроса Finesse AJAX и COMET 21 15.06.2011 17:17
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47