Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Функция next() (https://javascript.ru/forum/jquery/42501-funkciya-next.html)

рони 30.10.2013 16:41

Купэ,
на всякий случай
Цитата:

Сообщение от Купэ
"change"

для ваших селектов никогда несработает

Купэ 30.10.2013 16:45

Цитата:

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


У ДОМ-элемента есть свойство nextSibling... В jQuery есть метод next()...

В коде который я привел выше написал

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



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

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

("#select_"+i).parent(main_container).prop("disabled",true);

ksa 30.10.2013 16:50

Цитата:

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

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

В твоем случае
http://javascript.ru/forum/jquery/42...tml#post278781
Достаточно написать

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


Цитата:

Сообщение от Купэ
("#select_"+i).parent(main_container).prop("disabled",true);

Что ты этим пытаешся сделать?

Купэ 30.10.2013 16:50

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

$(main_container).children("#select_"+i).prop("disabled", true);

Купэ 30.10.2013 16:53

prop("disabled",true); - атрибут disabled активирует, кстати нормально работает, можно и так .attr("disabled","disabled");

рони 30.10.2013 16:55

Цитата:

Сообщение от Купэ
определить в каком контейнере <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>

Купэ 30.10.2013 20:57

У меня так не пойдет потому что в каждом контейнере id селектов одинаковые select_1 select_2, потому что эти списки соответствуют уровням вложенности каталога т.е. select_уровень вложенности,

рони 30.10.2013 21:02

Цитата:

Сообщение от Купэ
У меня так не пойдет потому что в каждом контейнере id селектов одинаковые select_1 select_2

да хоть все id сделайте одинаковыми код выше будет работать

ksa 31.10.2013 08:38

Цитата:

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

ИД должен быть уникален на странице...


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