События JQuery не работают в 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 создается как кнопка, а затем к нему добавляется span с текстом. Затем я пытаюсь добавить предупреждающее сообщение при нажатии кнопки (div). Эта функция должна создавать предупреждение при нажатии кнопки, но она создает предупреждение при отображении кнопки, то есть при вызове «функциональной кнопки», а не при нажатии кнопки.

Я получил машинописную версию jQuery с этой страницы: http://typescript.codeplex.com/sourcecontrol/latest#samples/jquery/jquery.d.ts

Я использую компилятор tsc в webstorm для компиляции. Однако, предполагая, что любой javascript является допустимым машинописным текстом, я также получил исходный код javascript и вставил его в файл .d.ts. Но это тоже дало ошибку компиляции. Пожалуйста, порекомендуйте.


person EternallyCurious    schedule 03.12.2013    source источник


Ответы (2)


Что вы делаете неправильно, так это вызов функции, когда вы передаете ее в качестве аргумента методу «Click» элемента. Как это...

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

Это сработает, когда вы объявите метод click. Что вы хотите сделать, так это передать метод, который вызывает метод «предупреждения», в качестве аргумента для объявления «щелчок», как это.

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

Это будет работать так, как вы ожидаете.

person Justin Russo    schedule 03.12.2013

Вам нужно передать ссылку на функцию в качестве параметра для click(). В вашем случае вы вызываете метод alert() и передаете возвращаемое им значение (undefined) в качестве значения обработчику кликов.

Используйте анонимную функцию в качестве обработчика кликов, внутри которой вы можете добавить alert(), как указано ниже.

$(idSelector(buttonDiv)).click(function(){
    alert("Hello")
});
person Arun P Johny    schedule 03.12.2013