Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 03.01.2014, 16:30
Интересующийся
Отправить личное сообщение для yndx.tavria Посмотреть профиль Найти все сообщения от yndx.tavria
 
Регистрация: 19.10.2013
Сообщений: 10

Кажется, что должно получится как-то так http://jsfiddle.net/tavriaforever/BrRjb/
Рекомендую почитать статью в учебнике про делегирование
http://learn.javascript.ru/event-delegation
Ответить с цитированием
  #22 (permalink)  
Старый 05.01.2014, 11:09
Интересующийся
Отправить личное сообщение для TITO Посмотреть профиль Найти все сообщения от TITO
 
Регистрация: 05.01.2014
Сообщений: 10

Здравствуйте. Прошу прощения у ТС за то, что влез в твой тред, но у меня та же проблема, мне нужно обработать все инпут радио на странице, но проблема в том, что я заранее не знаю сколько их будет, страница формируется не моими скриптами.
Пока решил проблему так
$(document).ready(function(){
	$(\'input:radio[name=jshop_attr_id11]\').change(function(){
			u=1;					
	});
});
$(document).ready(function(){
	$(\'input:radio[id=jshop_attr_id12]\').change(function(){
			u=2;					
	});
});
$(document).ready(function(){
	$(\'input:radio[id=jshop_attr_id15]\').change(function(){
			u=3;					
        });
});


Но это костыль, так как в данном случае удается обрабатывать только определенное количество инпутов, а как быть если на другой стрнице их будет 2 или 5. По name почему то вообще не работает, хотя имена у всех радио в моем случае одинаковы и формируются по аналогии с ид. Вот пример html кода который я хотел бы обработать.
<span id='block_attr_sel_1'>
<span class="input_type_radio">
<input type="radio" name="jshop_attr_id[1]" id="jshop_attr_id11" value="1" checked="checked" onclick="setAttrValue('1', this.value);"> 
<label for="jshop_attr_id11"><span class='radio_attr_label'>22</span></label></span>

<span class="input_type_radio">
<input type="radio" name="jshop_attr_id[1]" id="jshop_attr_id12" value="2" onclick="setAttrValue('1', this.value);">
<label for="jshop_attr_id12"><span class='radio_attr_label'>33</span></label></span>

<span class="input_type_radio">
<input type="radio" name="jshop_attr_id[1]" id="jshop_attr_id15" value="5" onclick="setAttrValue('1', this.value);"> 
<label for="jshop_attr_id15"><span class='radio_attr_label'>44</span></label></span>

<span class="input_type_radio">
<input type="radio" name="jshop_attr_id[1]" id="jshop_attr_id16" value="6" onclick="setAttrValue('1', this.value);"> 
<label for="jshop_attr_id16"><span class='radio_attr_label'>55</span></label></span>

Прошу помочь мне оформить приведенный мной код в функцию которая обрабатывала бы все инпут радио на странице я вижу решение что нужно по именам ее обработать, но как не пойму.
Забыл добавить, я из php могу вытащить все id и name у радиокнопок и подставить их в js, но все равно как то не пойму как организовать перебор именно функцией которая принимала бы ид кнопки и изменяла переменную внутри себя на заданное значение, так как писать 50 функций на каждую кнопку это не вариант и говнокод.

Последний раз редактировалось TITO, 05.01.2014 в 11:24.
Ответить с цитированием
  #23 (permalink)  
Старый 05.01.2014, 11:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

$('input[name="jshop_attr_id[1]"]')

Или, если они все в одной форме, то проще:
$('form input[type="checkbox"]')
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #24 (permalink)  
Старый 05.01.2014, 22:44
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script type="text/javascript">
$('input[name^="jshop_attr_id"]:radio').change(function(){
  alert(this.id)
  alert($(this).next('label').text())
});
</script>

Последний раз редактировалось Deff, 05.01.2014 в 22:47.
Ответить с цитированием
  #25 (permalink)  
Старый 05.01.2014, 23:55
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,452

$('#block_attr_sel_1').on('change', 'input', function () {
        alert(this.value);
});

JoomShoping - ненавижу
Ответить с цитированием
  #26 (permalink)  
Старый 06.01.2014, 11:04
Интересующийся
Отправить личное сообщение для yndx.tavria Посмотреть профиль Найти все сообщения от yndx.tavria
 
Регистрация: 19.10.2013
Сообщений: 10

Тогда уже так, отфильтровать селектор по имени инпутов
$('#block_attr_sel_1').on('change', 'input[name^=jshop_attr_id]:radio', function () {
        alert(this.value);
});
Ответить с цитированием
  #27 (permalink)  
Старый 06.01.2014, 11:40
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,452

yndx.tavria,
вы знаете JoomShoping?
это вывод одного атрибута, все input внутри '#block_attr_sel_1' будут иметь одинаковое имя и тип. Фильтрация здесь лишняя
Ответить с цитированием
  #28 (permalink)  
Старый 06.01.2014, 17:03
Интересующийся
Отправить личное сообщение для yndx.tavria Посмотреть профиль Найти все сообщения от yndx.tavria
 
Регистрация: 19.10.2013
Сообщений: 10

С JoomShoping не знаком.
Хорошо, тогда можно отфильтровать все radio - чтобы событие делегировалось только на такие инпуты, а все остальные игнорировались.
Ответить с цитированием
  #29 (permalink)  
Старый 08.01.2014, 17:53
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

Невероятно до чего дошел прогресс, что даже самые элементарные задачи начали порождать самые настоящие дискуссии.

var myradios = form.getElementsByName(there_known_elements_name);


И вешайте их на любой осине.
Ответить с цитированием
  #30 (permalink)  
Старый 08.01.2014, 18:15
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,452

Сообщение от kostyanet
И вешайте их на любой осине
kostyanet, а сколько вы их вешаете вы об этом подумали
сколько обработчиков событий в вашем примере будет
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отследить изменения в форме ? evgeniy123 jQuery 6 13.06.2013 07:33
Как отследить onload в iframe в ie8 platedz Events/DOM/Window 15 12.06.2013 02:20
Как реализована изменение цвета фотографии? progress0477 jQuery 0 17.09.2012 16:17
Как узнать value radio button-a из javascript kaaron jQuery 1 17.02.2009 14:34
Как узнать value radio button-a из javascript kaaron Общие вопросы Javascript 1 17.02.2009 12:25