JQuery: получение id элемента

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

JQuery: получение id элемента

Сообщение IMB »

Доброго дня!
Старница содержит ряд элементов следующего вида:

Код: Выделить всё

<tr class = "autocomplete">
    <td><strong>Изделие</strong></td>
    <td><input type = "text" id = "product" name = "product"></td>
</tr>

В заголовок страницы ставлен код для их обработки:

Код: Выделить всё

 <script type = "text/javascript">
$().ready(function()
{
    $('#product').autocomplete('jq.php', {
        minChars: 2,
        cacheLength: 10,
        extraParams: {t:'products'}
    });
    $('#client').autocomplete('jq.php', {
        minChars: 2,
        cacheLength: 10,
        extraParams: {t:'clients'}
    });
.............................

Как видно вся обработка сводится к передаче параметров внешнему файлу, различаются id элемента и дополнительный параметр ( extraParams). Так как код повторяется есть идея сделать универсальную фукцию принимающую параметры.
Для начала попытался выяснить id элемента:

Код: Выделить всё

$().click(
    {
        alert('curId = ' + $().attr('id'));
    });

Код отрабатывает, при клике на элементе появляется окно, но id каждый раз undefined.
Где я ошибаюсь?
Спасибо.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: JQuery: получение id элемента

Сообщение serzh-z »

IMB писал(а):
06.01.2010 14:03
Где я ошибаюсь?
"alert('curId = ' + $(this).attr('id'));"?

Вообще, для меня новость подобное использование $: $(). В смысле - $ без параметра.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: JQuery: получение id элемента

Сообщение IMB »

Без изменений.
Поучил id поля после приведения функции к виду:

Код: Выделить всё

$(':input').click(function()
    {
        alert("curId = " + $(this).attr('id'));
    });

Теперь осталось разобраться как передать полученную переменную в нужную мне функцию.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: JQuery: получение id элемента

Сообщение serzh-z »

IMB писал(а):
06.01.2010 14:55
Поучил id поля после приведения функции к виду:
А, ясно. Ты назначал обработчик click всем элементам, включая родителю своего input, соответственно он перехватывал click, но у него и правда не было id.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: JQuery: получение id элемента

Сообщение IMB »

Спасибо за объяснение!
Это конечно выходит за рамки изначального вопроса, но может быть не затруднит подсказать - как передать полученный id в основную функцию?
Спасибо.

Похоже проблема решена:

Код: Выделить всё

$().ready(function()
{
    $(':input').click(function()
    {
        var id = $(this).attr('id'); //id поля
        var arr = {id1:     'table1', //массив соответствий id - таблица
                    id2: 'table2'};
        $('#' + id).autocomplete('jq.php', {
            minChars: 2,
            cacheLength: 10,
            extraParams: {t: arr[id]}
        });
    });
});
Спасибо сказали: