几次点击后.load()的问题

时间:2011-07-20 13:45:55

标签: javascript jquery-selectors jquery

为什么在几次点击“#icon a”之后,挂起浏览器将运行代码js bad。
刷新页面时一切都很糟糕。我使用chrome,firefox和......

$('#icon a').click(function (event) {
        event.preventDefault();
        var id = '#' + this.id;
        var title = $(id).attr('title');
        $(".title").toggleClass("suject").html(title);
        var url = $(id).attr('href');
        $('.table_show, #num_count, #select_box, #input_search').fadeOut('slow', function () {
            $('.results').load(url, function(){
                $(this).hide().show();
                $.getScript("http://localhost/Siran-mehdi/files/js/admin.js"); 
            })
            //.hide().show("slow")
        });
    });

2 个答案:

答案 0 :(得分:0)

在链接上单击几次,就会运行几个ajax-requests。这就是hang browser will and is run code js bad的原因 尝试在初始点击后禁用链接,并在ajax-request完成时启用。

我希望它会有所帮助

<强>更新 冷杉你需要添加一些类链接。设为clickme;比你的代码会像这样。我没时间测试它,所以这只是想法。它应该工作。

$('#icon a.clickme').live('click', function (event) {
        var clickedLink=$(this);
        clickedLink.toggleClass('clickme');  //disabling link
        event.preventDefault();
        var id = '#' + this.id;
        var title = $(id).attr('title');
        $(".title").toggleClass("suject").html(title);
        var url = $(id).attr('href');
        $('.table_show, #num_count, #select_box, #input_search').fadeOut('slow', function () {
            $('.results').load(url, function(){
                //if load function failed 
                //you may enable link there
                $(this).hide().show();
                $.getScript("http://localhost/Siran-mehdi/files/js/admin.js", function(){
                    clickedLink.toggleClass('clickme');  //enabling link 
                }); 
            })
            //.hide().show("slow")
        });
    });

答案 1 :(得分:0)

来自jQuery文档(http://api.jquery.com/jQuery.getScript/)

  

这是一个简写的Ajax函数,相当于:

     

$ .ajax({url:url,dataType:“script”,success:success});

这意味着每次单击链接时都会进行异步ajax调用,并且在ajax调用完成之前再次单击时可能会导致问题。您可以尝试禁用链接,直到ajax请求完成。