阿贾克斯有时并不工作

时间:2014-05-28 11:04:20

标签: jquery ajax

我在我的网络应用程序中使用Ajax,这是我的Ajax Jquery功能:

$(".AlarmLink").click(function(){
            alert('ok');
            $(".page-content").empty();
            $("#alarm-loader").css('display','block');
            $.post($(this).attr("href"),                       
                       function(data){
                        var PageContent = $(data).find(".page-content");
                        $("#alarm-loader").css('display','none');
                        $(".page-content").append(PageContent.html());
                    });
            return false;
    });

我使用class =" AlarmLink"从HTML链接中调用它。

但问题是这种方法有时有效,有时则无效。

4 个答案:

答案 0 :(得分:3)

试试这个。可能在设置了侦听器后,您已将元素添加到页面中。

$(document).ready(function(){
 $(document).on('click', '.AlarmLink', function() {
   alert('ok');
            $(".page-content").empty();
            $("#alarm-loader").css('display','block');
            $.post($(this).attr("href"),                       
                       function(data){
                        var PageContent = $(data).find(".page-content");
                        $("#alarm-loader").css('display','none');
                        $(".page-content").append(PageContent.html());
                    });
            return false;
  })
});

答案 1 :(得分:2)

一些可能的问题,

  • 将其包装在文档就绪事件中(如果您还没有)
  • 确保您使用e.preventDefault()停止点击链接(“我从HTML链接中调用它”),尽管我看到您的返回false已经(并且e.stopPropagation())已经存在。因此,您不需要两者,只需e.preventDefault();return false
  • 如果元素可能会动态更改,请使用定位文档的on的分页版本,然后通过.AlarmLink选择器进行过滤(点击发生后)。

把所有这些放在一起你得到:

$(function(){
    $(document).on('click', ".AlarmLink", function(e){
            alert('ok');
            $(".page-content").empty();
            $("#alarm-loader").css('display','block');
            $.post($(this).attr("href"),                       
                       function(data){
                        var PageContent = $(data).find(".page-content");
                        $("#alarm-loader").css('display','none');
                        $(".page-content").append(PageContent.html());
                    });
            return false;
    });
});

注意:

附加到document的委托事件不需要DOM就绪处理程序,因为document始终存在,因此您可以将示例缩减为:

$(document).on('click', ".AlarmLink", function(e){
        alert('ok');
        $(".page-content").empty();
        $("#alarm-loader").css('display','block');
        $.post($(this).attr("href"),                       
                   function(data){
                    var PageContent = $(data).find(".page-content");
                    $("#alarm-loader").css('display','none');
                    $(".page-content").append(PageContent.html());
                });
        return false;
});

答案 2 :(得分:0)

试试这段代码,它最有可能帮到你

   $(function(){
    $(".AlarmLink").click(function(){
                alert('ok');
                $(".page-content").empty();
                $("#alarm-loader").css('display','block');
                $.post($(this).attr("href"),                       
                           function(data){
                            var PageContent = $(data).find(".page-content");
                            $("#alarm-loader").css('display','none');
                            $(".page-content").append(PageContent.html());
                        });
                return false;
        });
    });

答案 3 :(得分:0)

$(document).ready(function(){

    $(".AlarmLink").live('click', function() {

        alert('ok');

        $(".page-content").empty();
        $("#alarm-loader").css('display','block');
        $.post($(this).attr("href"),                       
                   function(data){
                    var PageContent = $(data).find(".page-content");
                    $("#alarm-loader").css('display','none');
                    $(".page-content").append(PageContent.html());
                });
        return false;
    })
});