给定ID时,jQuery addClass()不起作用

给定ID时,jQuery addClass()不起作用,jquery,Jquery,我有以下jQuery代码: $.ajax({ type: "POST", url: "/search", data: $("form").serialize(), success: function(data) { $("#tab").addClass("loading"); // THIS LINE DOESN'T WORK // . . . LOAD SEARCH RESULTS HERE (USUALLY TAKES SEVERAL SECONDS) . .

我有以下jQuery代码:

$.ajax({
  type: "POST",
  url: "/search",
  data: $("form").serialize(),
  success: function(data) {
    $("#tab").addClass("loading"); // THIS LINE DOESN'T WORK
    // . . . LOAD SEARCH RESULTS HERE (USUALLY TAKES SEVERAL SECONDS) . . .
    $("#tab").removeClass("loading");
  }
});
我有以下CSS:

.loading {
  background: transparent url(../resources/images/loading.gif) no-repeat right center;
  text-indent: -1000px;
}
我有以下相关的HTML:

<div id="tab">
  <table id="searchResultsGrid"></table>
</div>

我无法让行
$(“#tab”).addClass(“加载”)
工作。在FireBug中观察,类
.load
永远不会添加到
#选项卡
对象中。我做错了什么


谢谢

试试这个。可能发生的情况是,它添加和删除
加载
类的速度足够快,以至于它可以自行处理

// add the class before the ajax call
$("#tab").addClass("loading");

$.ajax({
  type: "POST",
  url: "/search",
  data: $("form").serialize(),
  success: function(data) {
    // . . . LOAD SEARCH RESULTS HERE . . .
  }
  complete: function(data) {
    // remove the class on complete, not success, in case of an error
    $("#tab").removeClass("loading");
  }
});

试试这个。可能发生的情况是,它添加和删除
加载
类的速度足够快,以至于它可以自行处理

// add the class before the ajax call
$("#tab").addClass("loading");

$.ajax({
  type: "POST",
  url: "/search",
  data: $("form").serialize(),
  success: function(data) {
    // . . . LOAD SEARCH RESULTS HERE . . .
  }
  complete: function(data) {
    // remove the class on complete, not success, in case of an error
    $("#tab").removeClass("loading");
  }
});

如果看不到HTML,很难说,但有一件事很突出,那就是一旦ajax调用成功返回,您将添加该类。尝试更改为:

$("#tab").addClass("loading");

$.ajax({
  type: "POST",
  url: "/search",
  data: $("form").serialize(),
  success: function(data) {
    // . . . LOAD SEARCH RESULTS HERE . . .
    $("#tab").removeClass("loading");
  }
});

如果看不到HTML,很难说,但有一件事很突出,那就是一旦ajax调用成功返回,您将添加该类。尝试更改为:

$("#tab").addClass("loading");

$.ajax({
  type: "POST",
  url: "/search",
  data: $("form").serialize(),
  success: function(data) {
    // . . . LOAD SEARCH RESULTS HERE . . .
    $("#tab").removeClass("loading");
  }
});

您应该在ajax调用之前设置类,然后在success函数中删除它。您所做的是设置它,然后在同一代码执行中删除它。在代码完成执行之前,该类不会进行可视化更新,此时您已经删除了该类。

您应该在ajax调用之前设置该类,然后在success函数中删除它。您所做的是设置它,然后在同一代码执行中删除它。在代码完成执行之前,该类不会进行可视化更新,此时您已经删除了该类。

首先添加类加载,然后删除类加载,这就是为什么您没有看到它工作的原因,您应该在ajax调用之前添加加载类,当调用返回成功时,您可以removeClass

首先添加类加载,然后再添加类加载,这就是为什么您没有看到它工作的原因,您应该在ajax调用之前添加加载类,当调用返回成功时,您可以removeClass

html是什么样子的?为什么要在ajax调用成功后添加loading类?您应该在ajax调用之前添加它,然后在成功函数中删除它可能是因为您同时添加和删除?您怎么知道它不起作用?成功函数是否被回调?在成功块中添加警报,以查看是否收到警报。可以显示html for tab元素吗?实际加载搜索结果需要几秒钟,这就是我想要显示进度的原因。html是什么样子的?为什么要在ajax调用成功后添加loading类?您应该在ajax调用之前添加它,然后在成功函数中删除它可能是因为您同时添加和删除?您怎么知道它不起作用?成功函数是否被回调?在成功块中添加警报,以查看是否收到警报。你能显示tab元素的html吗?搜索结果的实际加载需要几秒钟,这就是我想要显示的进度。你也可以在ajax开始之前使用beforeSend添加类添加“complete”回调函数,并将“addClass()”移到“success”回调之外,这样做就成功了。谢谢您还可以使用beforeSend在ajax开始之前添加类添加“complete”回调函数,并将“addClass()”移到“success”回调之外,这样做就成功了。谢谢