Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   .load() - как в загруженном содержимом использовать jquery? (https://javascript.ru/forum/jquery/9512-load-kak-v-zagruzhennom-soderzhimom-ispolzovat-jquery.html)

rbooz 21.05.2010 17:06

.load() - как в загруженном содержимом использовать jquery?
 
Такая проблема встала:
Делаю каталог, там товары выводятся, при клике на товар я вывожу див (наподобие лайтбокса допустим) поверх всего сайта, в этом диве вся информация о данном товаре, эта информация берется из бд (для этого .load). Т.е. у меня есть отдельный скрипт, в котором выводится вот это содержимое дива. И именно его я подгружаю в .load()

У каждого товара 3 картинки, и я хочу чтобы в этом подгруженном содержимом можно было покодить что-нибудь с помощью jquery (ну допустим 3 маленькие картинки, одна большая, и хочется прощелкаться по этим картинкам, чтобы они становились большими).
Ну это даже не так важно, что именно делать, просто вопрос принципиальный как раз в том, как взаимодействовать с подгруженным содержимым?
Я совсем только начал изучать jq, поэтому даже не пробовал, может с $ajax по-другому получится...
В любом случае, буду благодарен любым советам.

SkyLight 21.05.2010 18:34

А какая разница? Вы получили кусок хтмл, который добавился на страницу и jQuery имеет к нему такой же доступ, как и ко всему прочему. Работайте как и раньше - выбирайте нужные элементы по id или классу и т.д.
Цитата:

поэтому даже не пробовал
Вот надо сначала пробовать и пытаться решить задачу самостоятельно, иначе толку от всего вашего занятия - ноль.

Беляш 21.05.2010 22:55

Цитата:

Сообщение от SkyLight (Сообщение 56037)
А какая разница? Вы получили кусок хтмл, который добавился на страницу и jQuery имеет к нему такой же доступ, как и ко всему прочему. Работайте как и раньше - выбирайте нужные элементы по id или классу и т.д.

Если вот так:

function loadDiv(){
        ....
        $("#output").load(...); //допустим лоудом вставляем див с id="div"
        ....
	};

$("#div").click(function(){
        ....
        // что-то делает
        ...
})


При клике по по элементу с id="div", который был подгружен .load()-ом скрипт не сработает, просто не найдет элемент с таким id.

PS: в JS начинающий, но с этой проблемой уже сталкивался.

micscr 22.05.2010 07:56

Во первых функция load(url, data, callback) имеет третий аргумент - функцию где можно что то сделать после прихода ответа с сервера.

Во вторых, то что это
$("#div").click(function ...

не работает - делать:
$("#div").live('click', function ...

Gvozd 22.05.2010 08:31

micscr,
ну, и вот зачем ты плохому учишь человека?
Беляш,
помещай $("#div").click(function внутри ф-ции обработчике ajax-запроса
и вообще, лучше сперва выучи JavaScript Нормально, а потом уже учи jQuery
это плохая идея начинать изучение с него

micscr 22.05.2010 10:02

Цитата:

Сообщение от Gvozd (Сообщение 56074)
micscr,
ну, и вот зачем ты плохому учишь человека?

почему плохому?

Gvozd 22.05.2010 10:21

Цитата:

Сообщение от micscr
почему плохому?

потому что бездумное применение live может привести к проблемам с производительностью.
и человек привыкнув будет долго думать почему у него при движении мышкой все тормозит, к примеру
к тому же данного случая считаю Live неоправданным и ненужным.

Беляш 24.05.2010 09:14

Цитата:

Сообщение от Gvozd (Сообщение 56074)
micscr,
Беляш,
помещай $("#div").click(function внутри ф-ции обработчике ajax-запроса
и вообще, лучше сперва выучи JavaScript Нормально, а потом уже учи jQuery
это плохая идея начинать изучение с него

Это я понял, с этим я уже разобрался, просто привел возможный пример почему у ТС возникла проблема, т.к. сам на неё наткнулся.

Начинать изучение языка с одного из его фреймворков - дурной тон, это понятно. Просто так получилось, что пока нет желания/возможности/времени головой окунаться в недры JS, а для верстки и AJAX'а пока вполне достаточно возможностей jQuery.

rbooz 24.05.2010 10:39

Цитата:

Сообщение от Gvozd (Сообщение 56074)
micscr,
ну, и вот зачем ты плохому учишь человека?
Беляш,
помещай $("#div").click(function внутри ф-ции обработчике ajax-запроса
и вообще, лучше сперва выучи JavaScript Нормально, а потом уже учи jQuery
это плохая идея начинать изучение с него

Gvozd, в случае с лоадом "внутри ф-ции обработчике" это будет где? в callback\'e?

Когда использование live будет оправданным?

Gvozd 24.05.2010 11:02

Цитата:

Сообщение от rbooz
Gvozd, в случае с лоадом "внутри ф-ции обработчике" это будет где? в callback\'e?

да
Цитата:

Сообщение от rbooz
Когда использование live будет оправданным?

ну, лично я вижу такие ситуации:
- события не связанные с движением мыши, и печатанием на клавиаутуре.
хотя есть ситуации, когда в такой ситуации надо повесить live, но надо быть осторожным, так как такое использование может затормозить браузер. Особенно mousemove.
- у вас есть достаточно большое количество объектов, для которых надо повесить единый обработчик. например "виртуальная клавиатура", динамическое дерево, выпадающие многоуровневые меню, всякого рода карты с областями, элементы списков
чем больше количество однотипных объектов обрабатывается, тем выше скорость при повешении/снятия события
- особенно полезно, если эта куча объектов является динамической, и могут исчезать/добавлятся новые объекты. Например AJAX-дерево

и главное не забывать снять обработчик события, если на странице уже точно нету ни одного обрабатываемого объекта.

кажется все. больше поводов использовать live не вижу
ну и уж никак не стоит назначать его для одиночного элемента по id-шнику


Часовой пояс GMT +3, время: 11:11.