0

我正在尝试在打字稿中使用 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 创建为按钮,然后将带有文本的 span 添加到其中。然后我试图在单击按钮(div)时添加一条警报消息。此函数应在单击按钮时创建警报,但在呈现按钮时(即调用“功能按钮”时)而不是单击按钮时创建警报。

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

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

4

2 回答 2

2

您做错的事情是在将函数作为参数传递给元素的“单击”方法时调用该函数。像这样...

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

这将在您声明 click 方法时触发。您要做的是传递一个调用“警报”方法的方法,作为“点击”声明的参数,就像这样。

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

这将按您的预期工作。

于 2013-12-03T03:06:46.097 回答
1

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

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

$(idSelector(buttonDiv)).click(function(){
    alert("Hello")
});
于 2013-12-03T03:02:43.340 回答