Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Работа с элементами вызванные с помощью $.ajax() (https://javascript.ru/forum/jquery/35031-rabota-s-ehlementami-vyzvannye-s-pomoshhyu-%24-ajax.html)

zzzzzz 28.01.2013 19:14

Работа с элементами вызванные с помощью $.ajax()
 
C помощью $.ajax() вытаскиваю в блок(div#ajaxBlock) некий контент в виде html.
Теперь не могу назначать методы к ссылкам которые подтянулись аяксом в блок ajaxBlock.

Тоесть если ссылка загрузилась вместе с основной html страницей то этой ссылке могу назначить например метод клик и далее .css() и т.д и т.п, а если эту ссылку я вытащил аяксом то к ней уже методы не применяются. Почему и как испарвить, заранее спасибо.

Если неправильнео сформулировал проблему, отпишите пож-ста я постараюсь испарвиться

mullih 28.01.2013 19:42

или используйте bind на вновь добавленные элементы, так как они еще не являются слушателеми событий, либо когда создаете слушателя используйте метод on

про bind мона тута почитать Обработка событий ('Pro jQuery' на smarly.net)

про on -- тута http://api.jquery.com/on/

danik.js 28.01.2013 20:17

Подобный вопрос - раз в пол часа ))

mullih 28.01.2013 23:47

Цитата:

Сообщение от danik.js (Сообщение 229990)
Подобный вопрос - раз в пол часа ))

offtop
+1 чтото народ понесло или на аякс или на не знаю что, но почему то пошла проблема непонимание причинно-следственных связей событий и элементов

zzzzzz 23.02.2013 23:06

Друзья, к сожалению не получилось.
как я уже говорил в блок div#ajaxBlock вытащил ссылку аяксом, как вы сказали эта ссылка еще не является слушателем и я сделал так дабы проверить
$('#ssilka').bind("click", function(){
		alert('hhhhhhhhh');
	});

не получилось. Помогите разобраться

melky 23.02.2013 23:15

потому что ссылки как таковой не сущевует, когда исполняется код, который вешает обработчика.

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

решение легкое... слушать все поступаюшие события клика на странице и фильтровать нужные

это называется делегирование событий.

обычно обработчик вешается на какой-нибудь самый первый элемент (html, body, или родитель, куда подгрузится ajax-контент)

в разных библиотеках это делается по разному

в жиквери:

$("body").on("click", "#ssilka", function (e) { /* ... */ });

zzzzzz 23.02.2013 23:22

melky, спасибо сработало, но пока я ждал вашего ответа наткнулся на .live(). если в моем примере bind поменять на live то опять же все срабатывает. НО написано что live устарел, теперь пользоваться только .on() ??? и если не трудно ответьте в 2 словах почему bind live устарели?

melky 23.02.2013 23:42

Цитата:

Сообщение от zzzzzz
НО написано что live устарел, теперь пользоваться только .on() ???

on - комплексный метод

live содержит в себе вызов on; тем более, что live скоро будет вовсе удален из библиотеки


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