Я не понимаю, как выполняется этот javascript / jquery код - PullRequest
0 голосов
/ 23 июня 2011

Следующие коды не будут работать, если я удалю первую строку (alert ()), и очевидно, что она мне не нужна.Форма, к которой я привязал события, генерируется на лету с помощью jquery.Пожалуйста, в чем может быть проблема?Спасибо.

alert("");
$("#search").autocomplete('func.php');
$("#c_name").autocomplete('func.php');

$("#search").keypress(function(event) {
    if (event.which === 13) {
        findItem('search');
        return false;
    }
});

Ответы [ 4 ]

5 голосов
/ 23 июня 2011

Возможно, оповещение предоставляет задержку, необходимую для того, чтобы jQuery распознал требуемые элементы.

Удалите предупреждение () и добавьте следующее вокруг кода:

$(document).ready(function(){ ... your code here ... })
2 голосов
/ 23 июня 2011

Предупреждение дает необходимую задержку для загрузки форм, после чего имеет смысл привязать событие к элементу.Без оператора alert код выполняется до того, как элементы формы действительно могут быть загружены.Попробуйте использовать функцию live () jquery для привязки событий к элементам, которые загружаются динамически.Вот как это использовать: http://api.jquery.com/live/

1 голос
/ 23 июня 2011

Если $("#search") вызывается до динамического создания формы поиска, запрос jQuery вернет 0 объектов и не сможет связать события ни с чем.

Вызов alert() создает паузу, которая позволяетформа, которая будет создана до выполнения запроса $("#search").Вы можете подтвердить это, alert используя результаты $("#search") с первым и без alert().

. Прежде чем пытаться привязать к нему какие-либо события, убедитесь, что форма поиска создана.Если это не тривиально, вы можете использовать jQuery 1.5+ отложенные объекты .Отложенные объекты можно использовать, чтобы убедиться, что форма поиска создана до привязки к ней событий.

0 голосов
/ 23 июня 2011

Вам нужно обернуть это в $ (документ) .ready a la:

$(document).ready(function(){
  $("#search").autocomplete('func.php');
  $("#c_name").autocomplete('func.php');

  $("#search").keypress(function(event) {
      if (event.which === 13) {
          findItem('search');
          return false;
      }
  });
});
...