Jquery 使用AJAX,然后按照链接进行操作

Jquery 使用AJAX,然后按照链接进行操作,jquery,anchor,Jquery,Anchor,我在jQuery中处理AJAX函数,然后跟踪链接时遇到了问题。我有一个函数可以在页面上的任何点击上运行,比如jQuery('body').live('click',function(event){}) 此事件可能是链接,也可能不是链接。在这个回调中,我有类似于jQuery.post()的东西运行。因此,无论何时,只要身体上的任何地方发生点击事件,它就会运行。我的问题发生在单击是链接或链接中的某种div时。我尝试过以下方法: event.preventDefault() 接 if(jQuery(e

我在jQuery中处理AJAX函数,然后跟踪链接时遇到了问题。我有一个函数可以在页面上的任何点击上运行,比如
jQuery('body').live('click',function(event){})

此事件可能是链接,也可能不是链接。在这个回调中,我有类似于
jQuery.post()的东西运行。因此,无论何时,只要身体上的任何地方发生点击事件,它就会运行。我的问题发生在单击是链接或链接中的某种div时。我尝试过以下方法:

event.preventDefault()

if(jQuery(event.target).attr('href').length){
var url=jQuery(event.target).attr('href');
window.setTimeout(function(){document.location.href=url;},1000);//超时并等待效果完成
}

但问题是,如果您有类似于
的东西,这将不起作用。我的问题是


是否有一种可靠的方法来暂停正在跟踪的链接,处理AJAX,然后继续跟踪该链接?

这可能是一种攻击,但您似乎可以将所有链接目标更改为“#”,然后使用实际目标创建另一个属性。捕捉点击事件,处理它,然后处理真正的目标。您应该能够通过jQuery/JavaScript代码完成这一切,而无需编辑实际的html。

一个解决方案:

$("a").live('click',function(e){
  e.preventDefault();
  var url = this.href;
  setTimeout(function(){
    location.href = url;
  },1000);
});
我只是想知道这是否会影响到任何其他wordpress插件,这些插件可能有锚定标签和绑定到它们的事件

编辑:若要添加到该页面,您可能还需要确保该请求位于不同的页面:

$("a").live('click',function(e){
  var url = this.href;
  if (url == location.href) {
    return;
  }
  e.preventDefault();      
  setTimeout(function(){
    location.href = url;
  },1000);
});
如果执行淡入淡出(例如),则可以使用回调跟随链接。但请确保从onclick处理程序返回false,否则将立即导航:

函数onclickCallback(){
$(“#myelement”).fadeOut(500,function(){
window.location.href=”http://example.com/mynewpage";
});
返回false;
}
最后,用以下方法来称呼:


解决关于jQuery(event.target)的错误。最近('a').attr('href')。长度未定义。只需将这行代码添加到第97行
if(jQuery(event.target).closest('a').attr('href')){
…请参见下文,它修复了错误:

    // Redirect if this is a link
    if ( jQuery(event.target).closest('a').attr('href')) {
        if ( jQuery(event.target).closest('a').attr('href').length ) {
            var url = jQuery(event.target).closest('a').attr('href');
            if ( jQuery(event.target).closest('a').attr('target') == '_blank') {
                window.setTimeout(function() 
                    { window.open(url, '_blank') },
                    window.name,
                    1000);
            } else {
                window.setTimeout(function(){document.location.href=url;}, 1000); // timeout and waiting until effect is complete 
            }           
        }
    }

无论如何,伟大的插件:)…

只需找到最近的封闭链接。有关详细信息,请参阅//由于愚蠢的评论而被删除。我认为他的意思是
jQuery(event.target).最近('a').attr('href').length){var url=jQuery(event.target).最近('a').attr('href');window.setTimeout(function(){document.location.href=url;},1000);//超时并等待效果完成}
。看起来它应该对你有用。这就是他的意思=)。我刚刚测试过,效果很好。当我意识到这一点时,我删除了上面的评论。但是,万一有人读到这一点,我在上面的代码中漏掉了“a”。谢谢大家!不仅仅是黑客,一种暴行;)我不能这样做,因为我无法控制页面本身。这是错误的在一个可湿性粉剂插件中使用,我试图保持它尽可能的通用性。