Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery - проблема с выбором элемента (https://javascript.ru/forum/jquery/24972-jquery-problema-s-vyborom-ehlementa.html)

wfire 20.01.2012 17:43

jQuery - проблема с выбором элемента
 
Добрый день!
Есть скрипт аккордеона, который при нажатии на заголовок элемента аккордеона подгружает из базы данных информацию, которая отображается на раскрывшейся панели.
Проблема в том, что я не могу загрузить полученную инфу в аккордеон.
Код такой:
<h2 class="acc_trigger_l" id="11"><a href="#">Заголовок1</a></h2>
	<div class="acc_container" style="display: none;" id="vova">Сюда надо вставлять инфу из базы</div>


и проблемный кусок кода:
$('.acc_trigger_l').click(function(){
	var id = $(this).attr('id');
		var idd = $(this).next().attr('id'); // здесь idd=vova, то есть адресация через next() правильная
    //alert( idd );
	//////////////
		$.ajax({  
            type: "POST",  
            url: "loader.php",  
            data: "id="+id,  
            success: function(data) {
        		$(this).next().html(data);  //А вот это не почему-то работает
				//$('#vova').html(data); //А так работает!
				
            }  
        });

Дело в том, что я не могу ссылаться на целевой див по его Id, например, так как этих дивов много, надо на него сослаться именно как на первый див после заголовка элемента аккордеона, выполненного как <h2 class="acc_trigger_l>

zebra 20.01.2012 17:46

$('.acc_trigger_l').click(function(){
	var id = $(this).attr('id');
        var elem = $(this);
		var idd = $(this).next().attr('id'); // здесь idd=vova, то есть адресация через next() правильная
    //alert( idd );
	//////////////
		$.ajax({  
            type: "POST",  
            url: "loader.php",  
            data: "id="+id,  
            success: function(data) {
        		elem.next().html(data);  //А вот это не почему-то работает
				//$('#vova').html(data); //А так работает!
				
            }  
        });

wfire 20.01.2012 18:33

Большое спасибо!!
А можете пояснить, почему так? Почему напрямую через $(this).next не работает?

zebra 20.01.2012 18:56

Клац

wfire 20.01.2012 19:07

Ясно, спасибо!

wfire 22.01.2012 19:37

А вот еще вопрос возник: как можно сделать, чтобы отобразить индикатор загрузки на время работы loader.php?

zebra 22.01.2012 20:01

Перед вызовом ajaxa показываете рисунок или надпись, а в success скрывайте

wfire 24.01.2012 20:19

Цитата:

Сообщение от zebra (Сообщение 152183)
Перед вызовом ajaxa показываете рисунок или надпись, а в success скрывайте

Сделал так:
$('#button_sel').click(function(){
	var year = $('#sel_year').val();
	var month = $('#sel_month').val();
	[B]$('#proc').addClass('load1');[/B]
		$.ajax({  
           	type: "POST",  
           	url: "posts_request.php",  
           	data: "_year="+year+"&_month="+month+"&_edit="+edit,  
           	success: function(data) {
        		$(".scrolling_s").html(data);
				$('#list tr:odd').addClass('odd');
      			$('#list tr:even').addClass('even');
				[B]$('#proc').removeClass('load1');[/B]
           	}
		});  
	return false;
	});


Класс load1: .load1 {background:url(/images/ajax-loader1.gif) left no-repeat;}
ajax-loader1.gif - анимированная гифка.
Но проблема в том, что гифка появляется, но анимация не работает, пока не закончится работа posts_request.php
То есть в итоге показалась статичная гифка, скрылась - и все.
Как бы это победить?


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