【问题标题】:JQuery events not working in TypeScriptJQuery 事件在 TypeScript 中不起作用
【发布时间】:2013-12-18 23:21:33
【问题描述】:

我正在尝试在打字稿中使用 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 的 typescript 版本: http://typescript.codeplex.com/sourcecontrol/latest#samples/jquery/jquery.d.ts

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

【问题讨论】:

    标签: jquery typescript definitelytyped


    【解决方案1】:

    当您将函数作为参数传递给元素的“点击”方法时,您做错了调用该函数。像这样……

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

    这将在您声明 click 方法时触发。您要做的是传递一个调用“alert”方法的方法,作为“click”声明的参数,如下所示。

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

    这将按您的预期工作。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-10
        相关资源
        最近更新 更多