【问题标题】:How do you retrieve the class to hide the button?你如何检索类来隐藏按钮?
【发布时间】:2009-07-18 15:19:54
【问题描述】:

鉴于此 HTML:

<button id="buttonId1" class="hello universe">
<button id="buttonId2" class="hello world">

这样做的正确方法是什么:

$("#buttonId1").click(function ()
{    
   alert($("#buttonId1").getClass());
}

我意识到 JQuery 或 Javascript 中不存在 getClass 函数。但我希望有一些方法可以近似它。我有一个更复杂的现实世界问题,很难归结为一个简单的问题,但基本上我认为我需要以某种方式访问​​元素的类,然后使用该类字符串来执行额外的选择,例如:

$(("#buttonId1").getClass().filter("world")).hide();

也许有更简单的方法可以在我给出的代码中隐藏buttonId2——但这并不是重点。我感兴趣的是如何上课,然后进一步使用它。到目前为止,我想出的唯一解决方案是使用 if/else 语句的长分支来检查使用 hasClass 函数的所有可能的类。但这是一个非常不优雅的解决方案。

编辑:回应 Paolo 的回答,也许这样的东西可以隐藏 button2:

$(("#buttonId1").attr('class')[0].filter("world")).hide();

【问题讨论】:

    标签: jquery css-selectors


    【解决方案1】:

    我认为,如果您尝试解释您的最终目的是什么,我可能实际上可以帮助您以最佳的“jQuery 方式”实现您的最终结果 - 但是,如果没有这个,我只能说:

    $("#buttonId1").click(function() {    
       alert($(this).attr('class'));
    });
    

    会提示“你好”并且:

    $("#buttonId2").click(function() {    
       alert($(this).attr('class'));
    });
    

    会提醒'hello world'

    (作为旁注,像您在示例中那样在事件函数中重做选择器是不好的做法;您可以简单地使用 $(this) 来表示当前正在执行的元素)

    【讨论】:

    • 我想使用两个按钮共享的类'hello'来隐藏button2。为此,我还需要过滤 button2 具有但 button1 没有的“世界”类。感谢您提供有关 $(this) 的提示。
    • 如果我错了,请纠正我,但 attr('class') 将返回一个数组,而不是字符串...列出了两个类:["hello","world"] 所以下一个问题是哪一个?
    • 是的,我需要检索 attr('class') 数组的第一个元素,然后在过滤器中将其应用于第二个元素。听起来很笨拙,我知道。
    • 我根据 Paolo 的反馈更新了问题,以表明我的想法。
    • 不,DGM,它不会返回数组。它返回一个字符串。
    【解决方案2】:

    试试这个:

    $("#buttonId1").click(function ()
    {
     var classname = $("#buttonId1").attr("class")
     alert(classname);
    }
    

    【讨论】:

      【解决方案3】:

      参考:element.className

      $("#buttonId1").click(function ()
      {    
          alert(document.getElementById("buttonId1").className);
      }
      

      【讨论】:

        猜你喜欢
        • 2021-06-13
        • 1970-01-01
        • 1970-01-01
        • 2019-12-16
        • 2012-02-07
        • 1970-01-01
        • 2022-11-01
        • 1970-01-01
        相关资源
        最近更新 更多