【问题标题】:Use JQuery-functions on a DOM-element在 DOM 元素上使用 JQuery 函数
【发布时间】:2013-04-22 07:51:29
【问题描述】:

我确实认为这是一个非常愚蠢的问题,并且有一个非常简单的答案,但我没有找到解决方案:

我有以下 JavaScript 函数:

function setStatus(order, operation, status, elem){
    elem.parent().$(".active").removeClass("active");
    elem.addClass("active");
}

Elem 是我的 HTML 中的图像元素,通过使用 alert(elem); 检查它的类型,我确定它是正确的元素

我得到的错误正是我所期望的:

对象# 没有方法'parent'

我已经知道这是因为 elem 是 DOM 元素而不是 JQuery 元素,这意味着无法使用像 parent()addClass() 这样的函数。如何在我的 elem 上使用所有 JQuery 函数?有没有办法将 DOM 元素转换为 JQuery 元素?我在互联网上多次使用this 发现这个问题应该是$(this),但$(elem) 似乎不起作用。

【问题讨论】:

  • $(elem).siblings().removeClass("active").end().addClass("active");...?
  • 你为什么用$(".active")
  • $(".active", $(elem).parent()).removeClass("active"); $(elem).addClass("active"); alert() 不是记录/调试代码的最佳方式。改用 console.log($(elem));

标签: javascript jquery dom


【解决方案1】:

试试

function setStatus(order, operation, status, elem){
    elem.parent().find(".active").removeClass("active");
    elem.addClass("active");
}

【讨论】:

    【解决方案2】:

    试试这个

    $(elem).parent().removeClass("active");
     $(elem).addClass("active");
    

    删除$(".active")。我认为这也是罪魁祸首。

    【讨论】:

    • 这样就行了!但是我现在必须如何从类名处于活动状态的元素中删除所有“活动”?
    • $(".active").removeClass("active"); 在代码开头添加这一行。希望它会工作
    • 好吧,这与我想做的不太一样,该函数必须从 elem 的父级中类名处于活动状态的元素中删除所有“活动”。您的代码将删除“活动”父级,而不是父级内的元素
    • 我在吃午饭...我很高兴你找到答案:)
    【解决方案3】:

    .parent() 是一个 jquery 函数,所以为了使用它,你必须“jqueryify”你正在使用的元素,所以:

    $(elem)
    

    另外,虚假的$('.active') 会导致问题,因此解决方案应该是:

    $(elem).parent().removeClass("active");
    

    但是,如果没有看到一些 HTML 与 JS 一起使用,我不能 100% 确定。

    【讨论】:

      【解决方案4】:

      您的脚本中有一些语法错误,您可以使用此.addback() 链接它。

      elem.parent(".active").removeClass("active").addBack().addClass("active");
      

      【讨论】:

        猜你喜欢
        • 2010-10-01
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-17
        • 2011-10-10
        相关资源
        最近更新 更多