Обработчики Динамически Добавленных Элементов.

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем aworldx, 22 янв 2013.

  1. aworldx

    aworldx New Member

    Регистрация:
    22 янв 2013
    Сообщения:
    1
    Симпатии:
    0
    Всем привет. Пишу чат.
    В чате есть список юзеров и список сообщений, где я динамический добавляю элементы с содержимым при помощи метода append.
    На эти динамически добавляемые элементы нужно повесить обработчики нажатия клавиш мыши например.
    Вопрос вот какой: как передавать в эти обработчики переменные в качестве параметров?

    Я делаю например так:

    Когда юзер подключается к чату
    Код (Text):
    $('#tableusers').append('<tr><td ><input type="button" id="menunick' + data[i].name + '" style="background:url(pic/f.png);" onMouseOver="$(this).css(\'background\',\'url(pic/f_over.png)\');" onMouseOut="$(this).css(\'background\',\'url(pic/f.png)\');"/></td><td style="color:#' +data[i].color+';"><a id="anick' + data[i].name + '" href="#" style="margin-left:5px;">' + data[i].name + '</a></td></tr>');
    где data - массив юзеров

    потом делаю так

    Код (Text):
    $('#menunick' + data[i].name).on('click', function()
    {  

    str = this.id;
    str = str.replace('menunick', '');

    if($('#menuprivat_' + str).css('display') == 'none')
    {
    $('#menuprivat_' + str).css('display','table-row');
    $('#menuignor_' + str).css('display','table-row');
    }
    else
    {
    $('#menuprivat_' + str).css('display','none');
    $('#menuignor_' + str).css('display','none');
    }
    });
    То есть я вместо передачи в обработчик переменной data.name, формирую у элемента сложный айди, и потом в самом обработчике из этого айди вытаскиваю нужные мне данные.

    Во-первых смотрится как-то коряво, во-вторых я уже столкнулся с ситуацией, когда данный способ не помогает.

    помогите, пожалуйста, с советом. Спасибо.
     
Загрузка...

Поделиться этой страницей