Javascript 通过以点开头的CSS类名获取元素

Javascript 通过以点开头的CSS类名获取元素,javascript,jquery,Javascript,Jquery,我不得不将一个CSS类重命名为一个点,这样它就可以被ExtJS框架正确处理 在我做出更改之前,jQuery脚本一直运行良好,现在它抱怨找不到元素 我不太习惯jQuery,我的问题是这应该有效吗 $('.x-panel-body-cssmenu li.has-sub>a').on('click', function(){ //some code that errors out because .x-panel-body-cssmenu can't be found apparent

我不得不将一个CSS类重命名为一个点,这样它就可以被
ExtJS
框架正确处理

在我做出更改之前,jQuery脚本一直运行良好,现在它抱怨找不到元素

我不太习惯jQuery,我的问题是这应该有效吗

$('.x-panel-body-cssmenu li.has-sub>a').on('click', function(){

    //some code that errors out because .x-panel-body-cssmenu can't be found apparently...

});
这是所讨论的HTML:

<div class="x-panel x-border-item x-box-item x-panel-cssmenu" style="height: 441px; right: auto; left: 0px; top: 100px; margin: 0px; width: 200px;" id="navigationmenu-1011">
    <div id="navigationmenu-1011-body" class="x-panel-body x-panel-body-cssmenu x-layout-fit x-panel-body-cssmenu" style="height: 441px; left: 0px; top: 0px; width: 200px;">            
        <ul>
            <li class="active"><a href="#"><span>Home</span></a></li>
            <li class="has-sub"><a href="#"><span>Eligibility list</span></a>
                <ul>
                    <li><a href="#"><span>View/manage list</span></a></li>
                    <li><a href="#"><span>Add employee</span></a></li>
                </ul>
            </li>
            <li><a href="#"><span>Cases</span></a></li>
            <li class="last"><a href="#"><span>Documents</span></a></li>
        </ul>
    </div>
</div>
我试着逃离这个点,没有点,用一个磅符号,无论如何,没有


有什么想法吗?

NB:这回答了原来的问题。此后,该问题已被编辑,以显示似乎没有任何问题的代码


通常,应该避免在类名中使用特殊字符。他们比他们的价值更麻烦

但是,如果您一直使用包含特殊字符的类名,则可以对其进行转义

还有一个问题是,您需要在选择器中为类名添加前缀
,以指示您正在使用类选择器:

.\.x-panel-body-cssmenu
在选择器中:

.\.x-panel-body-cssmenu
请注意,由于您将选择器放在JavaScript字符串文本中,并且
\
是一个特殊字符,因此需要转义
\

".\\.x-panel-body-cssmenu"

注意:。HTML有类,CSS有类选择器。

从jQuery端看一切都正常,可能与名称或HTML有关。如果您从id前缀(#)移动到类前缀(.),您确实需要更好的类名……代码不会出错。选择器根本不匹配任何元素,因此它不会将事件处理程序绑定到任何东西,因此该函数永远不会运行。@FrancisDucharme:我在extjs的文档记录、确认甚至建议中找不到任何东西。我想你可能根本不需要这么复杂的解决方法:这只是常规的CSS选择器…@FrancisDucharme如果你点击“资格列表”,使用上面发布的代码,它在我的JSFIDLE()中工作。所以我不确定你的问题是什么。他不需要一个起点来告诉jQuery去寻找一个类吗?Ie:
$(“\\\.x-panel-body-cssmenu”)
谢谢您的回答。事实证明,ExtJS框架和(document)对元素ID的操作使问题变得复杂。在我尝试处理的元素实际呈现之前,ready事件就已经触发了(同样,ExtJS视口肯定干扰了jQuery的正常行为)。