Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   В Ajax контенте не работает скрипт (https://javascript.ru/forum/events/40943-v-ajax-kontente-ne-rabotaet-skript.html)

noid 25.08.2013 15:40

В Ajax контенте не работает скрипт
 
Вот, все говорят, купи слона что сто раз обсуждалось, а я так и не нашел решения. Правда я со скриптами не очень как-то.

Суть проблемы: При наведении на новость (картинку) срабатывает скрипт который отображает/скрывает рейтинг. А когда до низа страницы дохожу ajax-ом подгружаются ещё новости. Так вот, в контенте подгруженном ajax-ом скрипт не работает.

Только, мне бы по-проще объяснить, если можно. Да и от готового решения не откажусь.:D

Вот собственно сайт (картинки тестовые, всё не доделано:) ) - http://test.artmouse.net/

Да, как видите сплошной jquery.

ksa 25.08.2013 17:00

Цитата:

Сообщение от noid
в контенте подгруженном ajax-ом скрипт не работает

Как вариант на тех элементах просто нет обработчиков...

noid 25.08.2013 17:44

ну наверное, я копал интернеты, есть решения, но мне не хватает знаний вообщем-то. Потому и спрашиваю. Сам код (который не срабатывает)
$(document).ready(function() {
	
	var element = $('#dle-content .main-news');
	for (i=0; i<element.length; i++)
		{
			$(element[i]).addClass('news-'+i);
		}
		
	$('#dle-content .main-news').hover(
		function() {
			$('.main-news-hidden').stop(true);
			$(this).find('.main-news-hidden').animate({
				'bottom':'0'
			},400
			);
		}, function() {
			$('.main-news-hidden').stop(true);
			$(this).find('.main-news-hidden').animate({
				'bottom':'-120'
			}, 0);
			$('.main-news-hidden').stop(true);
	});
	
	$('.top-news li').hover(
		function() {
			$('.top-news-hidden').stop(true).fadeOut(0);
			$(this).find('.top-news-hidden').animate({
				'opacity':'1'
			},400, function()
				{
					$(this).fadeIn();
				}
			);
		}, function() {
			$('.top-news-hidden').stop(true);
			$(this).find('.top-news-hidden').fadeOut(100);
	});
	
	var element2 = $('.top-news li');
	for (i=0; i<element2.length; i++)
		{
			$(element2[i]).find('.list').append(i+1);
		}
	
});

везде пишут, что document ready грузится при полной загрузке страницы, но при ajax загрузке нет. Пишут, что можно подключить плагин live, вернее уже .on(), но я хз как это делается. Может есть код попроще, который с ajax-ом дружит? А может достаточно заменить строку
$(document).ready(function()

на какую-то другую и всё будет гуд? Ну мне бы очень этого хотелось...

ksa 25.08.2013 19:14

Цитата:

Сообщение от noid
Пишут, что можно подключить плагин live, вернее уже .on(), но я хз как это делается.

Вот читай
http://jquery-docs.ru/events/live/
Вот про on()
http://jquery.page2page.ru/index.php5/On

ksa 25.08.2013 19:16

Цитата:

Сообщение от noid
Может есть код попроще, который с ajax-ом дружит?

После получения ответа можно вешать обработчики...
Но on() или live() смотрится лучше...

noid 25.08.2013 20:32

к сожалению не моя тема, я синтаксиса не знаю. Примерно понял, но написать не получится самостоятельно.

noid 25.08.2013 20:39

Может кто код подправит мой, а? :(

ksa 25.08.2013 22:56

Цитата:

Сообщение от noid
написать не получится самостоятельно

Тогда бросай это дело... У нас тут есть раздел "Работа", там за деньги тебе сделают...

noid 26.08.2013 02:22

Да я уже сделал :) Вот такой вот код простой получился:

$("#dle-content").mouseover(function(){		
	$('.main-news').hover(
		function() {
			$(this).find('.main-news-hidden').stop().animate({
				'bottom':'0'
			},400
			);
		}, function() {
			$(this).find('.main-news-hidden').stop().animate({
				'bottom':'-135'
			},300
			);
	});
});


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