Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Не работают скрипты после ajax в БО Татьяны

Здесь авторы могут постить бета-версии своих расширений для phpBB. Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.2.x | FAQ | Внимание! Прежде чем создать тему - прочти! | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Не работают скрипты после ajax в БО Татьяны

Сообщение Alecto »

Татьяна5, вот такой вариант вроде работает.
проверял и для клееных постмерджем постов, и для добавленных аяксом без склейки после моего предыдущего или чужого поста.
поставил код на ближайший не перезаписываемый элемент выше (придумал не сам, подсказали).
годный вариант? пойдет?
или слишком большая нагрузка получается?

Код: Выделить всё

$('#posts').on('mouseenter', '.postprofile', function() {
		if ($(window).width() > 843) {
			$(this).find('.avatar img').stop(true, true).css({margin: '-20px 0 -40px 0'}).animate({margin: '0'},300);
			$(this).find('.profile-custom-field').stop(true, true).show(300);
			$(this).find('.profile-joined').stop(true, true).show(300);
			$(this).find('.profile-rank').stop(true, true).show(300);
			$(this).find('.profile-posts').stop(true, true).show(300);
				var txt1 = '<span id="temp_added_text" style="display: block; padding-left: 70px;"><br/>&#9650;<br/><br/></span>';
			$(this).find('.profile-contact').append(txt1);
		}


})
 $('#posts').on('mouseleave', '.postprofile', function() {
		if ($(window).width() > 843) {
			$(this).find('.avatar img').stop(true, true).css({margin: '-20px 0 -40px 0'});
			$(this).find('.profile-custom-field').stop(true, true).hide();
			$(this).find('.profile-joined').stop(true, true).hide();
			$(this).find('.profile-rank').stop(true, true).hide();
			$(this).find('.profile-posts').stop(true, true).hide();
			$(this).find('#temp_added_text').remove();
		}
})
старый вариант, для себя 

Код: Выделить всё

	$('.postprofile').hover(function() {
		if ($(window).width() > 843) {
			$(this).find('.avatar img').stop(true, true).css({margin: '-20px 0 -40px 0'}).animate({margin: '0'},300);
			$(this).find('.profile-custom-field').stop(true, true).show(300);
			$(this).find('.profile-joined').stop(true, true).show(300);
			$(this).find('.profile-rank').stop(true, true).show(300);
			$(this).find('.profile-posts').stop(true, true).show(300);
				var txt1 = '<span id="temp_added_text" style="display: block; padding-left: 70px;"><br/>&#9650;<br/><br/></span>';
			$(this).find('.profile-contact').append(txt1);
		}
	    }, function() {
		if ($(window).width() > 843) {
			$(this).find('.avatar img').stop(true, true).css({margin: '-20px 0 -40px 0'});
			$(this).find('.profile-custom-field').stop(true, true).hide();
			$(this).find('.profile-joined').stop(true, true).hide();
			$(this).find('.profile-rank').stop(true, true).hide();
			$(this).find('.profile-posts').stop(true, true).hide();
			$(this).find('#temp_added_text').remove();
		}
	});
Последний раз редактировалось Alecto 21.11.2014 9:11, всего редактировалось 1 раз.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Не работают скрипты после ajax в БО Татьяны

Сообщение Alecto »

подключаю событие сейчас вот так

Код: Выделить всё

$('.postprofile').on({
    mouseenter: function(){
    },
    mouseleave: function(){
    }
});
на странице таких элементов может быть максимум 10
но, этот вариант глючит с аяксом

вот этот вариант

Код: Выделить всё

$('#posts').on('mouseenter', '.postprofile', function() {
})
$('#posts').on('mouseleave', '.postprofile', function() {
})
работает с аяксом
но, здесь получается что находится элемент выше нужных по дереву и событие присваивается всем его элементам, а срабатывает только для .postprofile
т.е. я думаю, что этот вариант хоть и работающий, но более тяжелый в плане нагрузки на браузер.

прокомментируйте мои предположения пожалуйста, поскольку проанализировать с помощью расширений файрфокс или хрома - не получается.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12440
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2479 раз

Re: Не работают скрипты после ajax в БО Татьяны

Сообщение Татьяна5 »

Второй вариант единственно верный для работы с аяксом
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: Не работают скрипты после ajax в БО Татьяны

Сообщение Алг »

Alecto писал(а):но, здесь получается что находится элемент выше нужных по дереву и событие присваивается всем его элементам, а срабатывает только для .postprofile
т.е. я думаю, что этот вариант хоть и работающий, но более тяжелый в плане нагрузки на браузер.

прокомментируйте мои предположения пожалуйста, поскольку проанализировать с помощью расширений файрфокс или хрома - не получается.
Я уже комментировала, что для анализа нагрузки при загрузке нужен специальный инструмент, типа PageSpeed. Второй вариант использует делегирование событий к элементу postprofile, потому и срабатывает только для него.. и это правильно
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов

Вернуться в «Бета-версии расширений для phpBB»