jQuery禁用链接,如果已经在页面上

时间:2011-04-03 18:13:01

标签: javascript jquery

我有这个jquery代码,当用户点击列表中的链接时,它会动态地将html页面加载到div中。

如果用户已经在查看链接到的页面,是否有办法禁用其中一个链接?现在,即使所请求的链接已经显示,每次点击链接时都会触发加载动画。

如果已经显示它调用的页面和加载,我需要触发该事件。

$('#navigation a').click(function(){

    var toLoad = $(this).attr('href')+' #content';
    $('#content').hide("slide",{direction:"up"},1000,loadContent);
    window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
    function loadContent() {
        $('#content').load(toLoad,'',showNewContent())
    }
    function showNewContent() {
        $('#content').show("slide",{direction:"down"},1000);
    }
    return false;

});

1 个答案:

答案 0 :(得分:2)

您可以添加一个自定义类,该类会禁用您点击的链接。像:

$('#navigation a').click(function(){
  ......
  $(this).addClass('disabled');
  ....
}

但是,您可能会以某种方式从其他以前添加的链接中删除该类(因此您只需点击几下就不会禁用整个菜单。所以您可以进行一些重置,如:

$('#navigation a').click(function(){
  ......
  $('#navigation a').removeClass('disabled');
  $(this).addClass('disabled');
  ....
}

这只是一个简单的逻辑。我相信它可以以不同的方式进行优化或编写。

编辑:在这种情况下,Css类可能不会成功。我不确定,如果你可以在锚标签上使用disable()。或者你可以像在这个链接上使用preventDefault一样执行不同的逻辑,但是你仍然需要以这种方式跟踪禁用的元素,这样你就可以在点击另一个时启用它们。