Доброго времени суток! Получаю ссылки в блоке с помощью ajax. Для добавления события использую метод live: [js] $("a.a_contact").live("click",function(event){ некий код }); [/js] При нажатии на ссылку в функцию-обработчик должны передаваться некие параметры (заранее не известные). Ссылок в блоке может быть сколько угодно. До использования метода live ссылка выглядела так: HTML: <a href="#" class="a_contact" onClick="f_contact(1,2,3);">ссылка 1</a> Как передавать заранее не известные параметры в функцию-обработчик при использовании live()? Спасибо за помощь
я бы добавил свой атрибут в ссылку, а в live выдерал из этого атрибута переменныйе, что то типа <a myval="1" ></a> [js]$("a.a_contact").live("click",function(event){ this.atr("myval"); });[/js] и отправлял бы в другую функцию но наверное можно проще
Я вообще live`ом не пользуюсь. Добавляя новую ссылку делаешь: [js]var a = $("<a href='#'>тыкни</a>").click(function(){alert(1111);}); $(идентификатор).append(a); [/js] как-то так
1. Зачем использовать live? 2. Событие "клик" и код, который привязан к этому событию - разные вещи. Вынеси просто-напросто внешнюю функцию, как сделано выше. Никаких обработчиков вешать НЕ НАДО, если у тебя и так прописан код для атрибута onclick.
dots_rei как правило идет привязка к ID эелемента. Т.е. к примеру Код (Text): <a href="#" class="js-clickable" id="some_1_2_3"></a> $("js-clickable").live("click", function() { var str = $(this).attr('id'); var data = str.split(/_/); }); Можно и свой атрибут, но некрасиво и невалидно. Еще можно посмотреть на .data() или просто где-то в массиве хранить соответствие ID - данные. Кстати, live нужно использовать только если объект, на котором нужно словить событие, генерится жаваскриптом ну или вставляется аяксом. Если это исходный html - то достаточно bind.
у меня при нажатии на ссылку отправляется запрос на сервер, с учетом переданных параметров формируется блок для ui dialog и вызывается dialog. [js] $.post("/lib/scripts/c_contact.php",{"c1":c1,"c2":c2,"c3":c3}, function(data) { $("#div_dialog_contact").html(data); $('#div_dialog_contact').dialog('open'); }); [/js] Dialog отправляет данные на сервер, и ссылки изменяются. Соответственно, после обновления данных dialog нужно снова инициализировать. Вариант, который сразу пришел в голову - инициализировать dialog непосредственно после нажатия на ссылку. Но в таком случае для каждой ссылки придется каждый раз проводить инициализацию (даже если ссылки не менялись). Искала вариант, который позволит инициализировать dialog один раз после изменения ссылок. Поэтому думала использовать live(), С учетом советов переписала код без использования live(), работает. Недочет с многоразовой инициализацией пока остается.