【问题标题】:How can I fix jQuery links which hang if clicked quickly如何修复快速单击时挂起的 jQuery 链接
【发布时间】:2013-04-06 12:33:47
【问题描述】:

我的问题是一个 jQuery 菜单,它访问一个 MySql DB 并且倾向于挂起,我相信,如果按钮被点击得太快。有没有办法在加载完成之前停用所有链接?还是其他解决方案?

在 Wordpress 网站上,我有一个使用 jQuery 制作的自定义链接菜单,用于将信息从 MySQL 加载到主页区域。我昨天问了这个问题,经过更多的研究完全改变了代码,所以我在重新处理问题时删除了这个问题。 (感谢 Mike Brant 在我的 cmets 中提出的一个想法。)

菜单区域具有如下基本链接。 (来自 Menu.php)

<ul id="mainMenu">
    <li id="buttonStyle"><a href="M1" id="Left-Menu-Text">Link 1</a></li>
    <li id="buttonStyle"><a href="M2" id="Left-Menu-Text">Link 2</a></li>
</ul>

信息的接受 div 包含在 index.php 中(链接略高于加载区域,以适应 Wordpress 栏中的滚动。)

<a href="menuLoadAnchor" name="anchor1"></a>
    /*some code*/
<div id="loadWindow"></div>

菜单的jQuery如下。

function linkScroll(aid){
    var aTag = $("a[name='"+ aid +"']");
    $('html,body').animate({
        scrollTop: aTag.offset().top
    }, 'slow' );
}
$('ul#mainMenu li a').click(function() {
    var page = $(this).attr('href');
    linkScroll('anchor1');
    $('#loadWindow').html("<center><img src='images/loading.gif' /></center>");
    $('#loadWindow').load('./wp-content/themes/themeName/menuFolder/' + page + '.php');
    return false;
});

我不会有这样的问题,因为有人需要非常不耐烦才会发生这种情况。但是当它这样做时,它会留下一个打开的进程,我必须登录 SSH 才能杀死。有时我需要一次杀死很多人。非常感谢任何建议。先感谢您。

如果有帮助,我正在运行以下内容。 Wordpress 3.5.1 jQuery 1.8.3 jQuery UI 1.9 php 5.4 MySql Ver 14.14 Distrib 5.5.30 我会创建一个 jFiddle 但数据库消除了该选项。

对于那些可能发现这个并且可能遇到我昨天发现的相同问题的人 最初我让每个链接从 一个 单个文件中提取一个 div。实际上,每次点击都会发送每个数据库查询。所以我一直挂着这个。将它们分成单独的文件,它们仅在单击时将自己的查询发送到数据库。

【问题讨论】:

  • 为了使其更健壮,我将添加一个名为 working 的变量并将其设置为 false。单击链接时,检查 working 是否为 false - 如果是,则将 working 设置为 true 并执行加载。加载完成后将 working 设置为 false。这样可以减少用户错误。

标签: jquery mysql wordpress menu


【解决方案1】:

尝试如下绑定和解绑:

$("a").bind('click', false);

然后解除绑定/重新启用:

$("a").unbind('click', false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多