Мне нравится ограничивать все мои функции и приемники событий JQuery значением $ (window) .load, например:
$(window).load(function ()
{
function Foo(id)
{
alert(String.format("Do Foo for: {0}", id));
}
});
Обычно я делаю всю свою работу в этой области, но у меня есть случай, когда я хотел бы вызвать Foo (27) из HREF, созданного автономным виджетом JQuery. HREF выглядит так:
<a href="javascript:Foo(27)">Click me!</a>
Однако функция Foo () не появляется, когда я нажимаю на ссылку. Как я могу сделать это так?
[EDIT]
Итак, я просто принял ответ ниже и хотел бы поделиться своим окончательным осуществлением. Foo () была заменена именем фактического метода, который я использую. И да, я знаю, что String.format () не существует изначально; это часть моей собственной базовой библиотеки. Имея это в виду, вот что у меня есть. Это из файла, где я определяю все мои глобальные пространства имен. Это определение существует вне области действия jQuery.
// This is defined in the global namespace
if (typeof (window.App) === "undefined")
{
window.App = {};
}
Вот строка из виджета jQuery, которая создает HREF. Заголовок предназначен для прогноза, а HREF переходит на страницу сведений для этого прогноза:
r = String.format('<a href="javascript:App.NavDetails({1});" class="link3">{0}</a>',
Predikt.General.EncodeHtml(options.rowData.Title),
options.rowData.PredictionId);
А вот фактическая реализация функции NavDetails в моем файле jQuery $ (window) .load () - scoped:
$(window).load(function ()
{
App.NavDetails = function (id)
{
// Do something interesting with the ID here...
alert(String.format("The ID is: {0}", id));
};
});