Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.09.2008, 10:16
Новичок на форуме
Отправить личное сообщение для Tumman Посмотреть профиль Найти все сообщения от Tumman
 
Регистрация: 06.09.2008
Сообщений: 4

Передача содержимого 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.
Ответить с цитированием
  #2 (permalink)  
Старый 06.09.2008, 15:03
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Tumman,
У вас в
before("... <a ... onclick='closeForm("+now+");'> ...");

now - объект (передан параметр this - ссылка на текущий объект). А вы хотите его отобразить в строке, получается
onclick='closeForm("Object object")'


Тогда уж делайте так:
$(now).before("... <a ... onclick='closeForm(this);'> ...");

Не занося и не вынося this из кавычек.
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2008, 10:48
Новичок на форуме
Отправить личное сообщение для Tumman Посмотреть профиль Найти все сообщения от Tumman
 
Регистрация: 06.09.2008
Сообщений: 4

Огромное спасибо, за подробный и ясный ответ!
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2008, 12:19
Новичок на форуме
Отправить личное сообщение для Tumman Посмотреть профиль Найти все сообщения от Tumman
 
Регистрация: 06.09.2008
Сообщений: 4

Хотя, таким способом я не получаю в функции closeForm() доступ к этому объекту:
<a ... onclick='showForm(this); return false'>...

а получаю к объекту вызывающему closeForm().
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2008, 15:43
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

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();
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача переменных между файлами Dekker8 Events/DOM/Window 1 22.09.2008 01:53
перезагрузка содержимого в select magistr_bender Общие вопросы Javascript 8 10.09.2008 21:33
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 14:44
Как сделать окошко с возможностью изменения его содержимого? nolka Элементы интерфейса 2 10.07.2008 08:22
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52