очень странная проблема jquery - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь запустить функцию при загрузке страницы, но она не работает.Я добавил его в каждом месте, о котором только могу подумать, и то, что ONLY работает:

$("html").mousemove(function(event) {
    $('#project_thumbs_container').masonry('reload');
});

Я пробовал откладывать, но прибегнул к хакерскому методу выше:(

У кого-нибудь есть предложения относительно того, почему моя функция не запускается?

ОБНОВЛЕНИЕ:

Я использую кладку для jquery. Моя проблема заключается в том, когда я загружаюстраница, которая использует кладку с ajax, показывает их в одном столбце. $('#project_thumbs_container').masonry('reload'); сбрасывает его правильно, но работает только с использованием вышеуказанного метода mousemove.

Ответы [ 4 ]

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

Похоже, у вас есть одна из двух проблем:

1) Неверно сформированный HTML, который вызывает ошибку, которая не позволяет коду правильно анализировать при использовании синтаксиса документа onReady: $ (function () {...});

2) Масонство может загружаться асинхронно, что означает, что обратный вызов onReady может быть не тем, который вы хотите использовать. Ваш Ajax-вызов будет выглядеть примерно так:

$('body').load('index.html', function() {
  $('#project_thumbs_container').masonry();
});
1 голос
/ 20 октября 2011

Если у кого-то нет лучшего ответа, я просто помещаю код в мой fadeIn(); фрагмент после завершения вызова ajax:

this.fadeIn('slow', function() {
  $('#project_thumbs_container').masonry('reload');
});

Кажется, работает.

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

Просто поместите свою функцию в это

$(document).ready(function() {
  // Handler for .ready() called.
  // your function 
});

при загрузке вашей страницы функция будет выполняться

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

Попробуйте что-то вроде этого.

$(document).ready(function(){
    $('#project_thumbs_container').masonry('reload');
}); 

Вы можете разместить этот код в любом месте страницы, и он должен работать, если зависимости уже загружены.

...