21.05.2010, 17:06
|
Новичок на форуме
|
|
Регистрация: 21.05.2010
Сообщений: 3
|
|
.load() - как в загруженном содержимом использовать jquery?
Такая проблема встала:
Делаю каталог, там товары выводятся, при клике на товар я вывожу див (наподобие лайтбокса допустим) поверх всего сайта, в этом диве вся информация о данном товаре, эта информация берется из бд (для этого .load). Т.е. у меня есть отдельный скрипт, в котором выводится вот это содержимое дива. И именно его я подгружаю в .load()
У каждого товара 3 картинки, и я хочу чтобы в этом подгруженном содержимом можно было покодить что-нибудь с помощью jquery (ну допустим 3 маленькие картинки, одна большая, и хочется прощелкаться по этим картинкам, чтобы они становились большими).
Ну это даже не так важно, что именно делать, просто вопрос принципиальный как раз в том, как взаимодействовать с подгруженным содержимым?
Я совсем только начал изучать jq, поэтому даже не пробовал, может с $ajax по-другому получится...
В любом случае, буду благодарен любым советам.
|
|
21.05.2010, 18:34
|
|
Злюка-бобер
|
|
Регистрация: 21.03.2010
Сообщений: 438
|
|
А какая разница? Вы получили кусок хтмл, который добавился на страницу и jQuery имеет к нему такой же доступ, как и ко всему прочему. Работайте как и раньше - выбирайте нужные элементы по id или классу и т.д.
Цитата:
|
поэтому даже не пробовал
|
Вот надо сначала пробовать и пытаться решить задачу самостоятельно, иначе толку от всего вашего занятия - ноль.
__________________
In WEB We Trust
У всех есть своя темная сторона...
|
|
21.05.2010, 22:55
|
Интересующийся
|
|
Регистрация: 14.03.2010
Сообщений: 16
|
|
Сообщение от SkyLight
|
А какая разница? Вы получили кусок хтмл, который добавился на страницу и jQuery имеет к нему такой же доступ, как и ко всему прочему. Работайте как и раньше - выбирайте нужные элементы по id или классу и т.д.
|
Если вот так:
function loadDiv(){
....
$("#output").load(...); //допустим лоудом вставляем див с id="div"
....
};
$("#div").click(function(){
....
// что-то делает
...
})
При клике по по элементу с id="div", который был подгружен .load()-ом скрипт не сработает, просто не найдет элемент с таким id.
PS: в JS начинающий, но с этой проблемой уже сталкивался.
|
|
22.05.2010, 07:56
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Во первых функция load(url, data, callback) имеет третий аргумент - функцию где можно что то сделать после прихода ответа с сервера.
Во вторых, то что это
$("#div").click(function ...
не работает - делать:
$("#div").live('click', function ...
|
|
22.05.2010, 08:31
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
micscr,
ну, и вот зачем ты плохому учишь человека?
Беляш,
помещай $("#div").click(function внутри ф-ции обработчике ajax-запроса
и вообще, лучше сперва выучи JavaScript Нормально, а потом уже учи jQuery
это плохая идея начинать изучение с него
|
|
22.05.2010, 10:02
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Сообщение от Gvozd
|
micscr,
ну, и вот зачем ты плохому учишь человека?
|
почему плохому?
|
|
22.05.2010, 10:21
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от micscr
|
почему плохому?
|
потому что бездумное применение live может привести к проблемам с производительностью.
и человек привыкнув будет долго думать почему у него при движении мышкой все тормозит, к примеру
к тому же данного случая считаю Live неоправданным и ненужным.
|
|
24.05.2010, 09:14
|
Интересующийся
|
|
Регистрация: 14.03.2010
Сообщений: 16
|
|
Сообщение от Gvozd
|
micscr,
Беляш,
помещай $("#div").click(function внутри ф-ции обработчике ajax-запроса
и вообще, лучше сперва выучи JavaScript Нормально, а потом уже учи jQuery
это плохая идея начинать изучение с него
|
Это я понял, с этим я уже разобрался, просто привел возможный пример почему у ТС возникла проблема, т.к. сам на неё наткнулся.
Начинать изучение языка с одного из его фреймворков - дурной тон, это понятно. Просто так получилось, что пока нет желания/возможности/времени головой окунаться в недры JS, а для верстки и AJAX'а пока вполне достаточно возможностей jQuery.
|
|
24.05.2010, 10:39
|
Новичок на форуме
|
|
Регистрация: 21.05.2010
Сообщений: 3
|
|
Сообщение от Gvozd
|
micscr,
ну, и вот зачем ты плохому учишь человека?
Беляш,
помещай $("#div").click(function внутри ф-ции обработчике ajax-запроса
и вообще, лучше сперва выучи JavaScript Нормально, а потом уже учи jQuery
это плохая идея начинать изучение с него
|
Gvozd, в случае с лоадом "внутри ф-ции обработчике" это будет где? в callback'e?
Когда использование live будет оправданным?
|
|
24.05.2010, 11:02
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от rbooz
|
Gvozd, в случае с лоадом "внутри ф-ции обработчике" это будет где? в callback'e?
|
да
Сообщение от rbooz
|
Когда использование live будет оправданным?
|
ну, лично я вижу такие ситуации:
- события не связанные с движением мыши, и печатанием на клавиаутуре.
хотя есть ситуации, когда в такой ситуации надо повесить live, но надо быть осторожным, так как такое использование может затормозить браузер. Особенно mousemove.
- у вас есть достаточно большое количество объектов, для которых надо повесить единый обработчик. например "виртуальная клавиатура", динамическое дерево, выпадающие многоуровневые меню, всякого рода карты с областями, элементы списков
чем больше количество однотипных объектов обрабатывается, тем выше скорость при повешении/снятия события
- особенно полезно, если эта куча объектов является динамической, и могут исчезать/добавлятся новые объекты. Например AJAX-дерево
и главное не забывать снять обработчик события, если на странице уже точно нету ни одного обрабатываемого объекта.
кажется все. больше поводов использовать live не вижу
ну и уж никак не стоит назначать его для одиночного элемента по id-шнику
|
|
|
|