Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.04.2020, 00:32
Профессор
Отправить личное сообщение для greenwar Посмотреть профиль Найти все сообщения от greenwar
 
Регистрация: 19.08.2010
Сообщений: 150

так "та функция", это как раз ф-я ajaxPOST(), которая через jQuery вставляет новую таблицу.
там есть:
success: function(data) {ajaxRESULT(data);}

туда чтоли вставлять?
сейчас она стоит ПОСЛЕ неё... и всё равно не работает ^^
Ответить с цитированием
  #12 (permalink)  
Старый 24.04.2020, 02:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Почему бы не $(родитель).on('mouseenter', 'a.ajax_hover' , ..., без надобности в set_ajax_hover_cb() ?
Ответить с цитированием
  #13 (permalink)  
Старый 24.04.2020, 07:08
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от greenwar Посмотреть сообщение
так "та функция", это как раз ф-я ajaxPOST(), которая через jQuery вставляет новую таблицу.
там есть:
success: function(data) {ajaxRESULT(data);}

туда чтоли вставлять?
сейчас она стоит ПОСЛЕ неё... и всё равно не работает ^^
После нее стоит - не значит, что после нее работает. В ajaxPOST() очевидно есть часть, которая работает асинхронно. Есть функция, которая работает, только, когда пришел ответ от сервера, после ответа от сервера идет изменение таблицы. И именно после этого изменения нужно вызывать set_ajax_hover_cb()

Вот представьте, что вы сейчас после вызова set_ajax_hover_cb() поставите вызов какой-нибудь функции foo().
Вызовется set_ajax_hover_cb(), затем foo(). А те функции, которые описаны в set_ajax_hover_cb(), как реакция на наведение мыши когда вызовутся? Когда нибудь потом, когда мышь наведется.
Так же и тут. в ajaxPOST() есть функция

function(data) {ajaxRESULT(data);}

которая работает "когда нибудь потом", когда придет ответ от сервера. Вот там, после изменения таблицы и надо делать вызов set_ajax_hover_cb()
Так можно сделать

success: function(data) {ajaxRESULT(data); set_ajax_hover_cb();}

Последний раз редактировалось voraa, 24.04.2020 в 07:11.
Ответить с цитированием
  #14 (permalink)  
Старый 24.04.2020, 10:35
Профессор
Отправить личное сообщение для greenwar Посмотреть профиль Найти все сообщения от greenwar
 
Регистрация: 19.08.2010
Сообщений: 150

Сообщение от laimas Посмотреть сообщение
Почему бы не $(родитель).on('mouseenter', 'a.ajax_hover' , ..., без надобности в set_ajax_hover_cb() ?
$( selector ).hover( handlerIn, handlerOut )

это ведь сокращённая версия для:
$( selector ).mouseenter( handlerIn ).mouseleave( handlerOut );

а вы хотите set_ajax_hover_cb() в handlerOut ? Что это даст?
Ответить с цитированием
  #15 (permalink)  
Старый 24.04.2020, 10:38
Профессор
Отправить личное сообщение для greenwar Посмотреть профиль Найти все сообщения от greenwar
 
Регистрация: 19.08.2010
Сообщений: 150

Сообщение от voraa Посмотреть сообщение
success: function(data) {ajaxRESULT(data); set_ajax_hover_cb();}
там проблемка, она фиксирована, т.е. я её не создаю отдельно для этого вызова, а юзаю готовую...
и запихнуть туда ф-ю как?
Ответить с цитированием
  #16 (permalink)  
Старый 24.04.2020, 10:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от greenwar
это ведь сокращённая версия для
Нет, это делегирование обработки события родителю.

Сообщение от greenwar
а вы хотите set_ajax_hover_cb() в handlerOut ?
Я бы эту функцию вообще бы выбросил, как и не понимаю зачем тут таймер.
Ответить с цитированием
  #17 (permalink)  
Старый 24.04.2020, 10:46
Профессор
Отправить личное сообщение для greenwar Посмотреть профиль Найти все сообщения от greenwar
 
Регистрация: 19.08.2010
Сообщений: 150

таймер, потому что это может быть "мышь проехала мимо", а выводить ничего не надо
а вот когда мышь остановилась на ссылке и прошло 0.5 сек, тогда уже точно надо
в предыдущей версии (которая рабочая, кстати, там нет этой проблемы)
там в конце таблицы так:
$('.tbl1 a.waitFB').hover(abc1,abc2);

и после обновления таблицы ничего не надо вставлять вроде
но я придумал не вставлять каждый раз 2 ф-и, а заменить на одну
Ответить с цитированием
  #18 (permalink)  
Старый 24.04.2020, 11:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В таком случае таймер очищать можно и по ответу сервера, то есть обрабатывать нужно только заход на ... А делегирование решит остальные проблемы.
Ответить с цитированием
  #19 (permalink)  
Старый 24.04.2020, 11:20
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от laimas Посмотреть сообщение
В таком случае таймер очищать можно и по ответу сервера, то есть обрабатывать нужно только заход на ... А делегирование решит остальные проблемы.
Не должно быть обращения к серверу, если мышь задержалась на элементе меньше, чем на 0.5 сек. Как по ответу очищать, если не было обращения?
Ответить с цитированием
  #20 (permalink)  
Старый 24.04.2020, 11:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Точно. Хотя не мала ли задержка в таком случае, в смысле насколько это полезно?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра-квест на JS, помогите разобраться в структуре m_lulu Общие вопросы Javascript 1 29.03.2018 14:02
Не работает свое меню после AJAX AnonimS jQuery 6 07.02.2018 21:51
После первого действия скрипт перестает работать cyberx jQuery 6 12.06.2010 22:04
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
перестает работать lightbox после .load(); toha.chan jQuery 1 14.04.2010 16:37