Я просто делаю репост, чтобы прояснить это, и потому что я загрузил образец проблемы ...

Просто...

Этот модный плагин коробки отлично работает на этой странице http://www.websitesbyshane.co.uk /chris/portfolio.php

Но НЕ, если портфель #content загружен в index.php через ajax. Вы можете убедиться в этом сами, перейдя на домашнюю страницу здесь www.websitesbyshane.co.uk/chris и нажав «портфолио»

Спасибо за ваше время, ребята.

Шейн

0
shane 21 Июл 2010 в 01:24
3
Можете ли вы поместить сюда код, описывающий проблему?
 – 
David Hellsing
21 Июл 2010 в 01:29
Привет. не уверены, какие части кода вы хотели бы видеть? Моя проблема в том, что я хотел бы использовать javascript для НОВЫХ элементов, которые были загружены в div через ajax.
 – 
shane
21 Июл 2010 в 01:42
Я пытался выяснить, нужен ли мне .live () ...
 – 
shane
21 Июл 2010 в 01:42

2 ответа

Лучший ответ

Похоже, ваш вызов ajax загружает всю страницу портфолио .php. Разрешить пользователю щелкнуть ссылку и перейти на страницу портфолио, если у него не включен Javascript, - это отличная вещь, но загрузка всей этой страницы через вызов ajax обязательно вызовет некоторые проблемы.

Страница портфолио.php, которую вы загружаете через ajax, включает $ (document) .ready для включения лайтбокса, но этот код никогда не будет выполняться, поскольку главная страница уже загружена. Ваш код для вашего модного плагина коробки должен быть на главной веб-странице. Затем вы можете запустить этот код, чтобы привязать причудливую коробку после того, как вы загрузили страницу / контент портфолио в свой div.

Изменить: добавлено больше деталей:

У вас сейчас есть

$('#content').load(toLoad)

В вашем файле js.js. согласно документации jQuery api (http://api.jquery.com/load/) вы может передать ему обратный вызов для запуска, когда он закончится:

$('#content').load(toLoad, function() {
  alert('Load was performed.');
});

Вы можете просто загрузить свой модный код коробки в эту функцию обратного вызова в файле js.js следующим образом:

$('#content').load(toLoad, function() {
    $("a#example6").fancybox({
        'titlePosition' : 'over'
    });

    $("a[rel=example_group]").fancybox({
        'transitionIn' : 'none',
        'transitionOut' : 'none',
        'titlePosition' : 'over',
        'titleFormat' : function(title, currentArray, currentIndex, currentOpts) {
        return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
      }
    });
});

Проблема в том, что он будет вызван, даже если вы не вызываете страницу портфолио. Он не будет жаловаться, но это легко решить, заключив его в оператор «if».

0
Stephen Perelson 21 Июл 2010 в 16:37
Спасибо. Это решение звучит идеально. Я попытался добавить соответствующий javascript на ваш основной сайт, как вы предлагаете, но я просто не могу понять, как реализовать функцию .bind (). Нужно ли мне привязать новый контент к существующему javascript? это звучит логично, но как мне это сделать? Спасибо за ваше время :)
 – 
shane
21 Июл 2010 в 09:38
Ваш код немного запутан - его можно понять, поскольку вы пытаетесь заставить его работать. Надеюсь, вы сможете использовать то, что я здесь написал. Вызов метода .fancybox () привяжется к любому новому содержимому на странице, если он вызывается после загрузки содержимого. Вам не нужно использовать .live
 – 
Stephen Perelson
21 Июл 2010 в 16:43
Всем привет. Спасибо за помощь. Я понимаю логику здесь, но ... Используя функцию обратного вызова, я могу манипулировать любой частью DOM, кроме недавно добавленного контента. Здесь происходит серьезное чесание головы.
 – 
shane
21 Июл 2010 в 22:08
Привет, Стивен. Спасибо за вашу помощь, вы указали мне правильный путь, и, хотя мне так и не удалось использовать ваш код, идея натолкнула меня на .livequery (), который сработал безупречно! Спасибо за ваше время.
 – 
shane
23 Июл 2010 в 01:18

Вы используете firebug? это может помочь отладить ваш код php / ajax вживую. Только не забудьте включить отладку javascript и смотреть на вкладке ответов ajax при выдаче XMLHttpRequests для отладки.

0
incidah 21 Июл 2010 в 01:51
Привет, все мои javascripts работают правильно. Я просто не уверен, как использовать скрипты для новых элементов, в которые только что добавили DOM.
 – 
shane
21 Июл 2010 в 01:54