Jquery 使用AJAX,然后按照链接进行操作
我在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('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”。谢谢大家!不仅仅是黑客,一种暴行;)我不能这样做,因为我无法控制页面本身。这是错误的在一个可湿性粉剂插件中使用,我试图保持它尽可能的通用性。