目标: 在收到 ajax:success 之前禁用链接。 (然后我会告诉我的应用程序服务器启用链接。我正在编写一个简单的棋盘游戏,并且不想在第一个请求得到响应之前接收多个ajax请求,因为它会扰乱游戏逻辑.
<script type="text/javascript">
var disableLinks = false;
$("a").click(function(e){
if (disableLinks){
e.preventDefault();
}
});
$("a").ajaxStart(function(){
disableLinks = true;
});
$("a").ajaxStop(function(){
disableLinks = false;
});
</script>
链接如下:
<a href="/board/take_turn?id=313&x=1&y=2" data-remote="true">
<div class="ttt_square">
</div>
</a>
最佳答案
这是因为您的 AJAX 开始和结束事件永远不会触发。为什么?因为简单地单击链接并不是 AJAX 请求,并且不会触发全局 AJAX 事件。要使用全局 AJAX 事件,您需要使用 AJAX 函数,例如 .get( )、.load( ) 或 $.ajax( )
下面的代码大部分是您的...我刚刚添加了 2 行(甚至可以减少到 1 行,但我认为这样看起来更好)
var disableLinks = true;
$('a').click( function( e )
{
if( disableLinks )
{
e.preventDefault( );
}
var self = $(this);
$.ajax( { "url": self.attr( 'href' ) } );
} );
$('a').ajaxStart( function( )
{
disableLinks = true;
} );
$('a').ajaxStop( function( )
{
disableLinks = false;
} );
关于javascript - jQuery:在 ajax 事件后禁用链接的代码遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4868495/