【问题标题】:How can I use Jquery's removeClass on an element that is ajax'd in?如何在 ajax 中的元素上使用 Jquery 的 removeClass?
【发布时间】:2011-10-27 14:52:22
【问题描述】:

我只是想在通过 Ajax 拉入的元素上使用 Jquery 的 removeClass()。我很清楚能够将 .live() 用于“点击”之类的操作,但是对于 removeClass() 之类的功能我可以做什么?

注意:我听说过可以做到这一点的 JQuery 插件,但我宁愿自己使用 Jquery 编写它,如果它不残酷的话。

谢谢,

丹尼尔·莫尼兹

编辑:抱歉信息不足。我正在构建一个自动完成工具。用户按下一个键并获得通过 AJAX 拉入的项目列表。第一项会自动突出显示,因为(在 AJAX 回调中)我使用 .addClass() 给它“highlight”类。

但是,如果用户点击向上或向下箭头键,他们应该能够在列表中“导航”,即。我突出显示(和取消突出显示)列表中的项目。这些操作是在按钮按下时进行的,并且列表已经通过 AJAX 拉入。因此,我无法在 Ajax 回调中删除该类。

$(".highlight") 将有效地抓取当前突出显示的元素。

highlightedTopic.removeClass("highlight")

在执行上述代码并使用console.log($(".highlight")); 之后,我得到了元素的输出with 'highlight' 类。所以 removeClass() 函数失败(没有错误)。

【问题讨论】:

  • 可以在回调方法中使用。您能否提供更多信息,例如您的 html 和任何 javascript?
  • 你需要解释更多。根本不清楚问题是什么。 removeClass() 作用于通过 AJAX 请求创建的元素,就像它作用于原始 DOM 元素一样。因此,您需要解释您的具体案例,以便我们了解它为什么不起作用。
  • 我在上面添加了一些信息来澄清我的情况。
  • removeClass 函数并非没有错误地失败,您在尝试删除类时一定是做错了什么。没有看到你的代码很难提供帮助。

标签: jquery ajax removeclass


【解决方案1】:

假设列表中的所有项目都有“listItem”类,第一个项目也有“highlight”类 就像是 文本 文本 文本

然后在你的 JS 中试试这个

$(".highlight").live("keyup",function(e){
  if(e.keyCode==38)//up key 
  {
   $(this).removeClass("highlight");
   $(this).prev(".listItem").addClass("highlight");
   }
  else if(e.keyCode==40)//down key
  {
   $(this).removeClass("highlight");
   $(this).next(".listItem").addClass("highlight");

   } 
});

【讨论】:

  • 非常感谢!我不知道为什么我没有尝试这个。
【解决方案2】:

在 AJAX 加载器的成功回调中触发 removeClass。如果您发布代码会更容易演示,但例如:

$("some element").load("someurl", function () { $("#awsmsauce").removeClass("satin shoes"); });

【讨论】:

  • 我无法将它放入 AJAX 加载器中,因为在我想要触发 removeClass() 之前元素已经被拉入页面。请查看我的编辑。
  • @Paragon 我认为我不需要编辑以上内容。您可以只使用成功回调将事件处理程序附加到将添加和删除类的页面部分。在列表存在之前附加事件处理程序是没有意义的。
  • 谢谢小次郎!今晚我会搞乱绑定函数。
猜你喜欢
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多