не работает JS

I
На сайте с 04.08.2006
Offline
112
709

Здравствуйте.

Уже не однократно сталкивался с слудеющей проблемой, но всегда получалось ее обойти, но сейчас уже действительно тупик.

В страницу подгружаются скрипты.

jquery, и несколько самописных, для подгрузки контента без перегрузки страницы:


function createRequestObject()
{
try { return new XMLHttpRequest() }
catch(e)
{
try { return new ActiveXObject('Msxml2.XMLHTTP') }
catch(e)
{
try { return new ActiveXObject('Microsoft.XMLHTTP') }
catch(e) { return null; }
}
}
}
function showContent(link) {

var cont = document.getElementById('contentBody');
var loading = document.getElementById('loading');

cont.innerHTML = loading.innerHTML;

var http = createRequestObject();
if( http )
{
http.open('get', link);
http.onreadystatechange = function ()
{
if(http.readyState == 4)
{
cont.innerHTML = http.responseText;
}
}
http.send(null);
}
else
{
document.location = link;
}
}

дальше несколько плагинов для jquery для вывода подсказок и мультизагрузка файлов.

Все прекрасно работает.

НО!

Если я перегружаю блок <div id="qwerty1"></div>

И вставляю в него контент полученый с сервера, то:

Не подсказки, ни другие скрипты не работают.

Хотя события обрабатываются:

Допустим, мы подгрузили с сервера страницу, в которой есть ссылка с onclick="show_content_5();"

То функция show_content_5 (описаная в файле.js который подгружается в главном окне) успешно срабатывает.

То подсказки, мультизагрузка и т.д. не работает.

Такое чуство что работает только обработка событий.

Пример:

сайт _autoline24.com.ua

По центру сайта есть Последние на сайте Комерческие авто до 7,5т., возле названия каждой машины в этом блоке есть иконка І(информация), если подвести мышку на иконку, то выводится подсказка.

Слева возле Последние на сайте Комерческие авто до 7,5т., есть кнопка обновить, при клике на которую идет аякс запрос на сервер и php скрипт отдает тот же блок, но иконка І уже не работает.

Первоначально, блок с последники на сайте, вставляется прямо в страницу, но данные получаются по file_get_content с того же файла, что и при обновлении ajax запросом.

Но, если нажать на иконку категории (иконки с разными видами техники), то запрос исполняется, там на иконку повесил onclick, а функция описана в главном окне. Иконки тоже подгружаются через аякс, но событие исполняется.. Тут совсем не могу понять.

Как сделать что бы при перезагрузке контента через ajax скрипты и дальше работали.

Помогите пожалуйста.

Инновационный автомобильный проект. Экономия от 500 - 3000$ при покупке автомобиля (http://autoline24.com.ua) Магазин-блог уникальных полезных скриптов (http://ivashka.org.ua)
gormarket
На сайте с 29.12.2010
Offline
47
#1

Когда Вы загружаете полностью страницу, то после окончания загрузки запускаются функции JavaScript, которые в частности назначают обработчики событий для иконок І(информация).

Когда Вы обновляете содержимое части страницы аяксом (включая иконки), для новых иконок события оказываются не назначены.

Попробуйте к тому содержимому, что получаете аяксом (с иконками, перед отдачей с сайта) добавить скриптик:

<script language="JavaScript">

$('img.tttTip').tinyTips('grayyy', 'title');

</script>

Это может заставит работать иконки І(информация)

Если я правильно понял чем именно у Вас назначаются обработчики событий для иконок ...

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
DiAksID
На сайте с 02.08.2008
Offline
236
#2

на момент окончания загрузки страницы в дереве элементов ессессно нет того, что потом подгружается аяксом ;)

при успешном завершении аякса заставьте нужные функции заново пробежать по дереву элементов.

ЗЫ: опередили 😂

show must go on !!!...
I
На сайте с 04.08.2006
Offline
112
#3
DiAksID:
на момент окончания загрузки страницы в дереве элементов ессессно нет того, что потом подгружается аяксом ;)

при успешном завершении аякса заставьте нужные функции заново пробежать по дереву элементов.

ЗЫ: опередили 😂

А как заставить все функции заставить исполнится вновь?

Что бы не дергать по одному.

DiAksID
На сайте с 02.08.2008
Offline
236
#4
ivashka:
А как заставить все функции заставить исполнится вновь?
Что бы не дергать по одному.

для пробы можете тупо повторить весь блок ассоциаций из $().ready

потом определитесь, что именно стоит переассоциировать...

I
На сайте с 04.08.2006
Offline
112
#5

Спасибо огромное. Все получилось...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий