Проблемы с использованием $ .ajax - PullRequest
2 голосов
/ 22 мая 2010

Я хочу загружать javascript лайтбокса, только когда удовлетворено определенное условие, поэтому я загружаю его, используя $ .ajax, например так:

$.ajax({ url: "../static/js/lightbox.js", dataType: 'script', cache: true, success: function() {
    alert('loaded');
    $("a.lightbox").lightbox({
        opacity: "0.6",
        width: "940"
    });
}});

Я вижу предупреждение «загружен», но лайтбокс делаетне работа.Однако, когда я загружаю файл напрямую (скрипт src) из HTML, лайтбокс работает.Как мне это исправить?

Большое спасибо за вашу помощь.

Ответы [ 3 ]

4 голосов
/ 22 мая 2010

Вы можете использовать для этого $.getScript() (более короткий, но немного другой эффект кэширования), например:

$.getScript("../static/js/lightbox.js", function() {
  $("a.lightbox").lightbox({
    opacity: "0.6",
    width: "940"
  });
});
1 голос
/ 22 мая 2010

Правильно ли загружен скрипт? Вы видите «загруженное» предупреждение? Если бы я был на вашем месте, я бы поместил предупреждение в lightbox.js, чтобы увидеть, правильно ли он выполняется после загрузки. Также проверьте наличие ошибок JavaScript.

0 голосов
/ 22 мая 2010

Проблема в том, что js по-прежнему не является частью DOM. Правильно, что вы получаете lightbox.js, но он не готов к выполнению. Для динамического получения файла js вам придется использовать метод getScript вместо ajax. Посмотрите на API: http://api.jquery.com/jQuery.getScript/

...