2013-03-27 3 views
0

Я следующий небольшой JQuery скрипт:JQuery KeyUp событие не выполняется сразу

 $("#content").on("keyup", "#ID1", function() { 
     $("#ID2").load("loadText", resizeResult()); 
     }); 

     function resizeResult() { 
     if($("#ID2").height() != $("#ID3").height()){ 
      $("#ID3").animate({ 
      height: $("#ID2").height() 
      }, 800); 
     } 
     } 

Моя проблема сейчас в том, что функция изменения размера будет выполняться только NEXT «KeyUp» событие, но я хочу сразу, когда «нагрузка» в ID2 делается.

ответ

0

Вызов resizeResult() в конце keyupfunction

$("#content").on("keyup", "#ID1", function() { 
     .................. 

     resizeResult(); 
     }); 
+0

нет улучшение. Угадайте, что проблема заключается в динамическом содержании нагрузки. на самом деле я не использую строку, а http-запрос для получения контента для div. возможно, существует задержка между обновлением dom и вычислением размера div. – larz

0

называют вашу функцию загрузки в document.ready тоже ..

$(function(){ 
    $("#ID2").load("loadText", resizeResult()); //<-- call load function in document ready and in keyup function.. 
    $("#content").on("keyup", "#ID1", function() { 
     $("#ID2").load("loadText", resizeResult()); 
    }) 
    ..... 
}); 

и, пожалуйста, убедитесь, что ваш адрес в нагрузке правильный путь. .. loadText не является правильным путем

+0

ОК, я проверю его. обычно этот код из groovy будет загружаться: load ("$ {createLink (действие: 'searchDeliveryaddress')}? q =" – larz

+0

ok ... попробуйте ... если URL правильный, это должно работать .. let я знаю – bipen

+0

Достигнутая одобренность: при первых событиях с клавиатурой (результаты для поиска доставляются со второй буквой) изменяется размер. Когда я удаляю одну букву, результаты исчезают, но изменение размера снова застревает. Получает обновление в следующем событии keyup Я не могу использовать загрузку документа, потому что у меня есть две разные функции, загружаемые в один и тот же div, в зависимости от используемого поля формы. Поэтому fpr теперь я только что добавил $ (document) .ready (resizeResult()); – larz

0

Все выглядит хорошо в вашем коде. Но вам нужно оставить скобки из функции resizeResult внутри события. Потому что вы не хотите, чтобы он сразу вызывал, когда браузер выполняет сценарий. Это необходимо только тогда, когда событие уволено. Таким образом, вы должны изменить свой код для этого (и моих родных также общие события, которые рекомендуют Jquery):

$("#content").keyup(function() { 
    $("#ID2").load("loadText", resizeResult); 
}); 

function resizeResult() { 
    if($("#ID2").height() != $("#ID3").height()){ 
     $("#ID3").animate({ 
     height: $("#ID2").height() 
     }, 800); 
    } 
} 

Для безопасного выполнения подмигнули также лучше подождать, пока HTML не полностью загружен или до этого HTML-тегов (код javascript после контейнера ID3). Первый способ можно выполнить, используя $.document.ready из jQuery.

Смежные вопросы