Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2012, 12:51
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

Выборка элемента по динамично добавленному Id
Здравствуйте, есть задача: по клику получать данные из БД. При клике передается идентификатор, который берет значение из скрытого input, по которому происходит выборка из БД. Вставить их в div.result который есть в каждом блоке.
В данном случае, у каждой кнопке на странице уникальный Id. Щас задача реализована, но очень много кода получилось, так как пришлось отбирать каждый Id (8 штук) и на каждый вешать обработчик.
Меню в виде аккордеона.
При клике h2.acc_trigger раскрывается блок <div class="block"> с содержимым, в котором и находится нужная кнопка.
Вид как и кнопки (<a id="pokazRasp<?=$item['seminar_id'];?>" class="a_seminar">Показать расписание</a>) формируются динамически:
<?php foreach ($seminars_all as $item):?>
    
            <div class="container"> 
        	       <h2 class="acc_trigger"><a href="#"><?=$item['zagolovok'];?></a></h2> 
        	       <div class="acc_container">
						<div class="block"> 
                    		<?=$item['main_text'];?><br />
                            <a class="svernut a_seminar">Свернуть описание</a> 
                            <a id="pokazRasp<?=$item['seminar_id'];?>" class="a_seminar">Показать расписание</a>
                            <a class="pokazOtzv a_seminar" title="<?=$item['seminar_id'];?>">Показать отзывы</a>
                            <div class="clear"></div>
                            <div id="result<?=$item['seminar_id'];?>"></div>
                            <input type="hidden" id="pole<?=$item['seminar_id'];?>" value="<?=$item['seminar_id'];?>"/>
                       </div> 
	               </div>
            </div> 	
    <?php endforeach;?>


Вот код jquery по обработке нажатия на кнопку
===================================================================================
   показ и скрытие таблицы с расписанием
   */
   
    $('#pokazRasp1').toggle(function(){
    //$('#new3 .pokazRasp.a_seminar').live('toggle', function(){
    var b = $('#result1');
    b.empty(); //очищения блока от содержимого
    b.fadeIn(); //сворачивание блока
    $(this).text('Скрыть расписание'); //изменение надписи на кнопке
    var pokazOtzv = $('.pokazOtzv.a_seminar').eq(0);
    if(pokazOtzv.text()=='Скрыть отзывы') {
        pokazOtzv.text('Показать отзывы');
    }
  }, function(){
    var b = $('#result1');
    b.fadeOut();
    var pokazOtzv = $('.pokazOtzv.a_seminar').eq(0);
      if(pokazOtzv.text()=='Скрыть отзывы') {
        pokazOtzv.text('Показать отзывы');
    }
    $(this).text('Показать расписание');
  }); //конец toggle


Я попытался сделать так:
//=====добавляет класс new3 к активного блоку, т.е тот который //открылся
                    $('.acc_trigger').click(function(){
                        var b = $('.acc_trigger + div');
                        b.removeAttr('id', 'nameID').attr('id','new3');    
                    });

У всех 8-ми кнопок вместо Id сделал один класс pokazRasp. У input сделал класс pole, но value у каждого разное.
попытался их отобрать просто
$('#new3 .pokazRasp').click(function() {
var seminarId = $(‘#new3 .pole’).val();
alert(seminarId);
})

Реакция ноль, а если так то работает, но value берет все время из первого блока:
$('#new3 .pokazRasp').live(‘click’, (function() {
var seminarId = $(‘#new3 .pole’).val();
alert(seminarId);
})

Вот новый вид,
<?php foreach ($seminars_all as $item):?>
    
            <div class="container"> 
        	       <h2 class="acc_trigger"><a href="#"><?=$item['zagolovok'];?></a></h2> 
        	       <div class="acc_container">
						<div class="block"> 
                    		<?=$item['main_text'];?><br />
                            <a class="svernut a_seminar">Свернуть описание</a> 
                            <a class="pokazRasp a_seminar">Показать расписание</a>
                            <a class="pokazOtzv a_seminar" title="<?=$item['seminar_id'];?>">Показать отзывы</a>                            
<div class="clear"></div>
                            <div class="result"></div>
                            <input type="hidden" class="pole"  value="<?=$item['seminar_id'];?>"/>
                       </div> 
	               </div>
            </div> 	
    <?php endforeach;?>

Хочется сделать универсальную выборку.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2012, 13:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

$('.acc_container > .block > .pokazRasp').live ('click', (function() {
var seminarId = $(this).parent().find('.pole').val();
alert(seminarId);
})

Последний раз редактировалось Deff, 19.12.2012 в 14:30.
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2012, 14:06
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

спасибо за ответ! еще скобку одну в конце забыли.
Вставил в код, но выдаёт undefined
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2012, 14:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от vladimirlip
Вставил в код, но выдаёт undefined
$(document).ready(function(){
  $('.acc_container > .block > .pokazRasp').live ('click', (function() {
    var seminarId = $(this).parent().find('.pole').val();
    alert(seminarId);
  });
}):

Последний раз редактировалось Deff, 19.12.2012 в 14:25.
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2012, 14:21
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

загрузки странички дождался и в первом варианте. все равно выдаёт undefined
Ответить с цитированием
  #6 (permalink)  
Старый 19.12.2012, 14:24
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

Добавил к кнопке title, вывести получилось..но find почему-то не хочет искать элемент с классом.
$('.acc_container > .block > .pokazRasp').live ('click', (function() {
                    	var seminarId = $(this).attr('title');
                    	alert(seminarId);
                    	}));
Ответить с цитированием
  #7 (permalink)  
Старый 19.12.2012, 14:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Поправил
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как то можно узнать ID HTML элемента вызвавшего JavaScript функцию? Opusel Events/DOM/Window 1 18.12.2011 18:36
Выборка элемента меню utb jQuery 10 01.12.2011 10:21
Расстояние от элемента до элемента (Sandr) Общие вопросы Javascript 4 24.11.2011 17:20
DOM. Выборка элемента по классу ручками prolapse Events/DOM/Window 6 18.09.2011 18:13
Браузер не успевает определить высоту вновь созданного через XMLHttpRequest элемента Lockpickup AJAX и COMET 17 25.04.2011 17:58