jQuery Bind событие, запускающее событие - PullRequest
1 голос
/ 07 августа 2009

Я вызываю первую функцию ниже, чтобы связать вторую функцию с событием onClick.

Странно то, что вызов первой функции приводит к запуску второй функции.

Параметр LinkName в первой функции является именем элемента таблицы td - возможно, не имеет значения.

function EnableExpand(LinkName, i) {
    $(LinkName).addClass("link-text");
    $(LinkName).bind("onclick", ExpandFrame(LinkName, i));
}

function ExpandFrame(lName, i) {
    $("#mapFrame" + i).attr({ height: 500, width: 800 });
}

Ответы [ 3 ]

4 голосов
/ 07 августа 2009

Проблема в том, что вторым аргументом для .bind () должна быть функция, но вы вызываете функцию. JQuery оценивает вызов функции и пытается привязать результат к событию click.

Оборачивая вызов функции в анонимную функцию, как и предполагалось, механизм javascript связывает функцию-обертку с событием, а не оценивает, что внутри нее.

$(LinkName).click( function () { ExpandFrame(LinkName, i) } );

Может быть полезно понять, что использование следующего эквивалентно приведенному выше коду.

$(LinkName).click( function () { ExpandFrame(LinkName, i) }() );
4 голосов
/ 07 августа 2009

Вам нужно передать функцию, которая будет вызываться, когда происходит событие click. То, как вы это сделали, вы немедленно вызвали функцию и сказали JQuery вызвать любое значение, возвращаемое из этой функции.

$(LinkName).bind("click", function () { ExpandFrame(LinkName, i); } );
2 голосов
/ 07 августа 2009

Вам не нужно связывать. .click сделает.

$(LinkName).click( function () { ExpandFrame(LinkName, i) } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...