jquery. livequery() странное поведение

попытка запустить плагин jquery «livequery», чтобы выделить некоторые слова в динамически генерируемых результатах поиска, не работает! Однако добавление функции alert() перед выполнением кода приводит к появлению выделения! Так в чем проблема?

$(document).ready(function(){     
     $('#searchResults').livequery(function(el){
     // alert('test');
     $( '#searchResults' ).highlight( highlightArray );
 });
});  

person Newbie    schedule 03.09.2015    source источник


Ответы (2)


Можете ли вы попробовать добавить некоторую задержку на setTimeout()

$(document).ready(function(){     
     $('#searchResults').livequery(function(el){
         // alert('test');
         setTimeout(function(){
             $( '#searchResults' ).highlight( highlightArray );
         },400);
     });
});  
person vijayP    schedule 03.09.2015
comment
хорошая идея! однако у него есть некоторые недостатки, например, если содержимое страницы занимает больше времени, чем указано, оно не будет работать ... это действительно хорошая идея, но я надеюсь, что смогу найти что-нибудь получше. - person Newbie; 03.09.2015

Почему вы все еще используете livequery? Это пока не нужно. Это было до того, как jQuery делегировал события. См. этот ответ SO для получения дополнительной информации. Используйте .on() вместо livequery().

Так что вы можете просто сделать

$(document).on('change','#searchResults',function(el){
    $('#searchResults').highlight(highlightArray);
});
person Lelio Faieta    schedule 03.09.2015
comment
Я попробовал что-то вроде $(document).on('change','#searchResults',function(){ alert(test); }); - person Newbie; 03.09.2015
comment
все еще не работает, предупреждение не появляется, я не знаю, почему (я на 100% уверен, что #searchResults Id является целевым div) - person Newbie; 03.09.2015
comment
Посмотрите подробнее, как работает .on(). Вам нужно искать не целевой div, а элемент, вызывающий событие. Событие может быть любым и запускающим элементом. Внутри вы запустите анимацию на любом элементе в Доме. - person Lelio Faieta; 03.09.2015
comment
Я попробовал body вместо #searchResults, но предупреждения не появляются, хотя новые данные (результаты поиска) всегда появляются на странице. - person Newbie; 03.09.2015
comment
Тело не является элементом, на который следует ссылаться. Пожалуйста, настройте скрипт, если вы хотите продолжить отладку, и посмотрите документацию для .on - person Lelio Faieta; 03.09.2015