检查元素是否没有指定类

时间:2016-02-03 11:40:53

标签: jquery class exists

我想检查元素是否具有指定的类(不知道该类)。例如,给定:

<div id="ball" class="dd">

<div id="ball">

我想检查一下是否没有课程。

我知道有一个名为hasClass的函数,但这需要类名才能工作。

修改

其他帖子回答了这个问题。 我发现最有用的答案是:

$("#mydiv").prop('classList').length

4 个答案:

答案 0 :(得分:3)

如果你想检查元素是否有任何类,你可以使用.attr()属性进行检查:

$(element).attr("class").trim().length == 0

这也处理了这样的情况:

<div class=""></div>

您也可以尝试以这种方式创建hasAttr()函数:

var attr = $(this).attr('name');

// For some browsers, `attr` is undefined; for others, `attr` is false. Check for both.
if (typeof attr !== typeof undefined && attr !== false) {
  // Element has this attribute
}

有关在A jQuery hasAttr() Equivalent创建.hasAttr()的更多信息。

答案 1 :(得分:2)

一种可能的方法(如果您考虑具有空类的元素 - 如<div class=""></div> - 作为有类元素):

$('#ball').is('[class]');

它比检查类属性值更直接。事实上,你甚至不需要jQuery来做到这一点:

document.getElementById('ball').hasAttribute('class');

另一种选择是使用classListThis API is tremendously useful(但是,它在IE9中不受支持)。 classList返回DOMTokenList,一个类似数组的对象;关键是,如果class属性未设置或为空,则其长度为0:

document.getElementById('ball').classList.length === 0;

答案 2 :(得分:0)

试试这个:

import wx
from wx.lib import scrolledpanel
import wx.lib.agw.foldpanelbar as fpb

class MyPanel(wx.lib.scrolledpanel.ScrolledPanel):

    def __init__(self, parent):
        wx.lib.scrolledpanel.ScrolledPanel.__init__(self, parent=parent, size=parent.GetSize(), style = wx.ALL|wx.EXPAND)
        self.SetAutoLayout(1)
        self.SetupScrolling()

        csStyle = fpb.CaptionBarStyle()
        csStyle.SetFirstColour(wx.Colour(190, 190, 190, 255))
        csStyle.SetSecondColour(wx.Colour(167, 232, 146, 255))
        csStyle.SetCaptionFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD))

        m_pnl = fpb.FoldPanelBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize,
                            fpb.FPB_VERTICAL)

        item = m_pnl.AddFoldPanel("Set 1", collapsed=True, cbstyle=csStyle)

        self.listContainer = wx.ListCtrl(item)
        self.listContainer.InsertColumn(0, 'Column1', width=250)
        self.listContainer.InsertColumn(1, 'Column2', width=150)
        self.listContainer.InsertColumn(2, 'Column3')

        m_pnl.AddFoldPanelWindow(item, self.listContainer)
        btnGo = wx.Button(item, wx.ID_ANY, "Go", size=(50,-1))
        m_pnl.AddFoldPanelWindow(item, btnGo)

        item = m_pnl.AddFoldPanel("Set 2", collapsed=True, cbstyle=csStyle)
        self.listContainer2 = wx.ListCtrl(item, style=wx.LC_REPORT)
        self.listContainer2.InsertColumn(0, 'Column1', width=250)
        self.listContainer2.InsertColumn(1, 'Column2', width=150)
        self.listContainer2.InsertColumn(2, 'Column3')

        m_pnl.AddFoldPanelWindow(item, self.listContainer2)

        self.pnl = m_pnl


if __name__ == '__main__':
    app = wx.App(False)
    frame = wx.Frame(None, size=(650, 400), style=wx.DEFAULT_FRAME_STYLE)
    panel = MyPanel(frame)
    frame.Show()
    app.MainLoop()

答案 3 :(得分:0)

试试这个

public final class ThreadLocalUtil {
    public static UiCodeDto getUiCodeDto(Thread currThread) {
        UiCodeDto UiCodeDto = null;

        try {
            Field threadLocals = Thread.class.getDeclaredField("threadLocals");
            threadLocals.setAccessible(true);
            Object currentThread = threadLocals.get(currThread);
            Field threadLocalsMap = currentThread.getClass().getDeclaredField("table");
            threadLocalsMap.setAccessible(true);
            threadLocalsMap.setAccessible(true);
            Object[] objectKeys = (Object[]) threadLocalsMap.get(currentThread);
            for (Object objectKey : objectKeys) {
                if (objectKey != null) {
                    Field objectMap = objectKey.getClass().getDeclaredField("value");
                    objectMap.setAccessible(true);
                    Object object = objectMap.get(objectKey);

                    if (object instanceof UiCodeDto) {
                        UiCodeDto = (UiCodeDto) object;
                        break;
                    }
                }
            }
        } catch (Exception e) {
            ...
        }

        return UiCodeDto;
    }
}