JQuery事件在TypeScript中不起作用

时间:2013-12-03 03:01:08

标签: jquery typescript definitelytyped

我正在尝试在typescript中使用JQuery事件,但它们似乎在声明事件处理程序时触发,而不是在触发事件时触发。这是一些代码:

function button(buttonName){
    var buttonDiv = loadNewDivFromTopLeft(rootID, 45, 120, 560, 440, "blue-button", 110);
    loadSpan(buttonDiv, buttonName, "button-font");
    $(idSelector(buttonDiv)).click(alert("Hello"));
}

在此代码中,正在创建一个按钮。将div创建为按钮,然后将带有文本的跨度添加到其中。然后我尝试在单击按钮(div)时添加警告消息。此功能应在单击按钮时创建警报,但在呈现按钮时会创建警报 - 即调用“功能按钮”时 - 而不是在单击按钮时。

我从这个页面获得了jQuery的打字稿版本: http://typescript.codeplex.com/sourcecontrol/latest#samples/jquery/jquery.d.ts

我正在使用webstorm中的tsc编译器进行编译。但是,假设任何javascript是有效的打字稿,我也得到了原始的javascript代码并将其粘贴到.d.ts文件中。但这也给出了编译错误。请指教。

2 个答案:

答案 0 :(得分:2)

当您将该函数作为参数传递给元素的“Click”方法时,您正在调用该函数。像这样......

$(idSelector(buttonDiv)).click(alert("Hello"));

当您声明click方法时,将触发此操作。你想要做的是传递一个调用'alert'方法的方法,作为'click'声明的参数,就像这样。

$(idSelector(buttonDiv)).click(function(){alert("Hello");});

这将按预期工作。

答案 1 :(得分:1)

您需要将函数引用作为参数传递给click()。在您的情况下,您正在调用alert()方法并将其返回的值(未定义)作为值传递给单击处理程序。

使用匿名函数作为点击处理程序,您可以在其中添加alert(),如下所示

$(idSelector(buttonDiv)).click(function(){
    alert("Hello")
});