Передача содержимого this
Добрый день!
Есть примерно такая конструкция: <a ... onclick='showForm(this); return false'>... function showForm(now) { [...] // У меня библиотек jQuery, смысл конструкции, вставляется html-код $(now).before("... <a ... onclick='closeForm("+now+");'> ..."); } function closeForm(obj) { // Закрывает. $(obj).parent(".social-popup").remove(); } Проблема в том, что в closeForm() приходит что-то не то, и функция не работает. Как нормально передать ссылку на первоначальный объект, вызвавший showForm. |
Tumman,
У вас в before("... <a ... onclick='closeForm("+now+");'> ..."); now - объект (передан параметр this - ссылка на текущий объект). А вы хотите его отобразить в строке, получается onclick='closeForm("Object object")' Тогда уж делайте так: $(now).before("... <a ... onclick='closeForm(this);'> ..."); Не занося и не вынося this из кавычек. |
Огромное спасибо, за подробный и ясный ответ!
|
Хотя, таким способом я не получаю в функции closeForm() доступ к этому объекту:
<a ... onclick='showForm(this); return false'>... а получаю к объекту вызывающему closeForm(). |
Tumman,
А, я сначала не понял к какому элементу вам нужен доступ. Вам нужно повесить обработчик на сслыку с closeForm через JavaScript, создав локальное замыкание, для того, чтоб из обработчика иметь доступ к переменной now. Для этого вам нужно получить доступ к элементу с closeForm, но поскольку он создается напрямую из JavaScript - с этим могут быть сложности. Для решения вашей задачи не хватит inline обработчиков прямо в html (onclick=""), вам нужно установить их из JavaScript. Должно получится что-то вроде такого: <a ... onclick='showForm(this); return false'>... function showForm(now) { [...] // У меня библиотек jQuery, смысл конструкции, вставляется html-код var piece = $("... <a ... class="closeLink" onclick='closeForm("+now+");'> ..."); $(".closeLink", piece).click(function() { closeForm(now); }) $(now).before(piece); } function closeForm(obj) { // Закрывает. $(obj).parent(".social-popup").remove(); } |
Часовой пояс GMT +3, время: 11:54. |