Курица или событие прослушивателя события яйца: jQuery наблюдает за созданным javascript-узлом? - PullRequest
1 голос
/ 29 октября 2011

Прежде всего, я должен использовать и создать этот элемент DOM в файле Javascript, я застрял с ним.Я не могу сделать все это в jQuery, что, очевидно, было бы намного проще.

В основных терминах:

Файл JS создает элемент dom в некоторый момент времени после того, как страница имеетзагружен.Я хочу добавить графический элемент к этому элементу dom.Этот элемент canvas запускается плагином jQuery, который я называю в моих сценариях сайтов jQuery, например:

Spinners.create('#spinThis');
Spinners.create('#spinThis').play();});

Я попытался поместить этот фрагмент кода непосредственно в файл Javascript через встроенный «скрипт»теги, использующие «innerHTML», но его не видно (почему на самом деле?)

Это настоящая головоломка.Как мне сказать, чтобы мой файл jQuery продолжал искать элемент, который рано или поздно появится через другой (Java) скрипт, а затем что-то с ним сделать?

Я бы подумал, что-то вроде live() сделал бы трюк, но это не имеет смысла, ему нужно событие, и оно должно быть связано с идентификатором, который еще даже не существует. Вздох

Вы можете увидеть это здесь: http://syndex.me

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

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Это своего рода хакерство, но в основном это то, что раньше делал livequery:

var spinThisTimer = setInterval(function(){

  if (document.getElementById('spinThis') {
    clearInterval(spinThisTimer);
    Spinners.create('#spinThis');
    Spinners.create('#spinThis').play();});
  });

},100);

Он ищет DOM 10 раз в секунду для элемента с идентификатором spinThis. Как только он найден, интервал очищается и код запускается.

0 голосов
/ 29 октября 2011

Я не уверен, что на 100% понимаю вашу проблему, но, похоже, вы можете использовать "live" для ее решения.

Помните, что вы можете ссылаться на идентификатор или класс, который еще не существует, ивызовите метод live, чтобы установить событие (даже пользовательское), которое будет обрабатывать все, что вам нужно.

...