运行function然后按链接

我似乎无法找到我在这里尝试做的一个例子,但我确信这是可能的。

考虑以下:

 

如何在link之前单击#main_nav中的link之前运行函数?

以下不起作用,因为在运行该函数之前遵循链接。

 $('#main_nav a').click(function() { // Some Function }); 

编辑

我实际上是在点击链接时尝试使用JQuery cookie插件清除cookie。 我不确定这是否相关。

清除cookie代码是:

 $.cookie('TMMenu', null); 

TMMenu是正确的名称,并加载插件。

编辑

对不起大家。 问题实际上是JQuery Cookie插件文档 。

 $.cookie('TMMenu', null); 

如自述文件中所述似乎不起作用。 这样做:

 $.cookie('TMMenu', null, { path: '/', expires: -5 }); 

更新 :重新编辑:除了下面的#1之外,我看不出任何其他原因。

我可以想到这个问题的两个答案:

  1. 您在#main_nav a元素存在之前运行jQuery代码,并且没有连接事件处理程序。 将您的脚本放在HTML文件的底部,就在结束标记之前,或者使用ready回调 。

  2. 你在处理程序中做了一些异步操作,而没有看到它发生。 这是因为只要事件处理程序返回,链接就会被跟踪 – 即使你的处理程序启动了一些异步操作。

以下是如何修复第二个(如果你把它放在最后或在一个ready处理程序内):

 $('#main_nav a').click(function(event) { // Remember the link href var href = this.href; // Don't follow the link event.preventDefault(); // Do the async thing startSomeAsyncThing(function() { // This is the completion callback for the asynchronous thing; // go to the link window.location = href; }); }); 

( 实时复制 | 来源 )

这是你如何做到的。 如果在单击处理程序回调中调用event.preventDefault ,则会阻止默认操作。 然后通过Javascript关注链接,只需使用window.open(url)window.location = url

简单的Javascript示例

 document.querySelector('#main_nav a').addEventListener('click', function (event) { // Do something before following the link // Get url from the target element () href attribute var url = event.target.href; // Open the url in the current window. Set to "_blank" instead of "_self" to open in a new window. window.open(url, '_self'); // Prevent default action (eg following the link) event.preventDefault(); }); 

jQuery示例

 $('#main_nav a').click(function (event) { // Do something before following the link // Get url from the  href attribute var url = $(this).attr('href'); // Open the url in the current window. Set to "_blank" instead of "_self" to open in a new window. window.open(url, "_self"); // Prevent default action (eg following the link) event.preventDefault(); }); 

有关window.openwindow.location之间差异的更多信息,请参阅MDN。