Evento jQuery Bind disparando el evento

Estoy llamando a la primera función a continuación para vincular la segunda función al evento onClick.

Lo extraño es que llamar a la primera función da como resultado la activación de la segunda función.

El parámetro LinkName en la primera función es el nombre de un elemento de tabla td, probablemente no sea relevante.

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 }); } 

El problema es que el segundo argumento de .bind () debe ser una función, pero está llamando a una función. JQuery evalúa la llamada a la función e intenta vincular el resultado al evento clic.

Al ajustar la llamada a la función en una función anónima, como se sugiere, el motor de javascript vinculará la función de envoltura al evento, y no evaluará lo que hay dentro.

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

Puede ser útil darse cuenta de que usar lo siguiente es equivalente a su código anterior.

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

Debe pasar una función que se activará cuando ocurra el evento de clic. De la forma en que lo tenía, estaba llamando a la función de inmediato, y le decía a JQuery que llamara cualquier valor devuelto por esa función.

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

No necesitas el enlace. .click hará.

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