Этот вопрос предназначен для разработки плагинов jQuery и других самодостаточных фрагментов JavaScript, которые не требуют модификации других файлов script для обеспечения совместимости.
Мы все знаем, что event.preventDefault() предотвратит событие по умолчанию, чтобы мы могли запускать пользовательскую функцию. Но что, если мы хотим просто задержать событие по умолчанию, прежде чем вызывать его? Я видел различные трюки и обходные пути для конкретных случаев, чтобы повторно вызвать действие по умолчанию, но, как я уже сказал, мой интерес к универсальному способу повторного запуска по умолчанию и не относится к триггерам по умолчанию для case- в зависимости от случая.
$(submitButton).click(function (e) {
e.preventDefault();
// Do custom code here.
e.invokeDefault(); // Imaginary... :(
});
Даже для чего-то простого, как представление формы, похоже, нет универсального ответа. Обходное решение $(selector).closest("form").submit()
предполагает, что действие по умолчанию - стандартное представление формы, а не что-то неловкое, как функция __doPostBack()
в ASP.NET. В конце вызова обратных вызовов ASP.NET это самое близкое к тому, что я пришел к универсальному решению "set-it-and-forget-it":
$(submitButton).click(function (e) {
e.preventDefault();
// Do custom code here.
var javascriptCommand = e.currentTarget.attributes.href.nodeValue;
evalLinkJs(javascriptCommand);
});
function evalLinkJs(link) {
// Eat it, Crockford. :)
eval(link.replace(/^javascript:/g, ""));
}
Я полагаю, что я мог бы начать писать специальные случаи для обработки обычных ссылок с перенаправлением window.location
, но затем мы открываем целую новую червь червей - набирая все больше и больше случаев для вызова по умолчанию, возникает больше проблем, чем решения.
Итак, как насчет этого? У кого есть волшебная пуля, которую я искал?