Jquery проблема с добавлением и связыванием одновременно - PullRequest
0 голосов
/ 25 марта 2011

Я работаю над прекрасным выбором решений для моего веб-сайта.
Я сделал ссылку <a name="iwanthereanid" class="popper">Click Here!</a>.
Нажав на нее, я вызываю функцию popup().

$(".popper").click(function() {
    popup($(this));
});

В функции popup() я проверяю, было ли это уже открыто? Нет
Давайте сделаем div и наполним его вещами на fillwiththings().

function popup(where) 
{
    if (where.hasClass("on")) 
    {
        where.removeClass("on");
        where.next("div").remove();
    }
    else 
    {
        where.addClass("on");
        fillwiththings(where);
    }
}

function selectclose(where)
{
    var nameval = $(this).attr("name");
    var textval = $(this).text();
    where.attr("name", nameval);
    where.text(textval);
    where.removeClass("on");
    where.next("div").remove();
}

function fillwiththings(where, id)
{
    $container = $('<div class="popup"></div>')
    for (i = 0; i < object.length; i++)
    {
        $container.append($('<a name="'+jsonobject[i]["id"]+'">'+jsonobject[i]["name"]+'</a>').bind("click", {where: where}, selectclose()));
    }
}

В fillwiththings() Я бы хотел связать с добавленной <a></a> еще одну функцию с параметром where, чтобы закрыть и заменить значение текста и имени тега a (Click Here!). Но связать не удается. Что я пропустил? Пожалуйста, помогите в этом.

Спасибо.

1 Ответ

1 голос
/ 25 марта 2011

Вы неправильно обращаетесь к параметру where. Данные события не передаются в качестве параметра обработчику события, это свойство объекта события:

function selectclose(event) {
    event.data.where
        .attr("name", $(this).attr("name"))
        .text($(this).text())
        .removeClass("on")
        .next("div").remove();
}

Другая проблема заключается в том, что вы передаете возвращаемое значение из selectclose() для привязки. Вы должны передать функцию напрямую:

$container.append($(...).bind("click", {where: where}, selectclose));
//                                          no parenthesis ------^
...