【发布时间】:2014-11-28 12:22:03
【问题描述】:
我今天在我的一个 JQuery 脚本上运行了一个神秘的错误。 我有一个像这样的简单 HTML 页面:
<section id="article" class="col-xs col-md col-lg-10 col-lg-offset-1">
<nav id="page_menu">
<ol>
<li class="page_menu_selected"><a href="#9">Community</a></li>
<li class="page_menu_unselected"><a href="#42">irc channels</a></li>
<li class="page_menu_unselected"><a href="#40">mailing lists</a></li>
<li class="page_menu_unselected"><a href="#38">q&a section</a></li>
</ol>
</nav>
<article class="show" id="9">
<h3>TITLE:</h3>
<p>Blablablba 01</p>
</article>
<article class="hidden" id="42"></article>
<article class="hidden" id="40"></article>
<article class="hidden" id="38">
<h3>TITLE:</h3>
<p>BLABLABLABLA 02</p>
</article>
</section>
和JQuery相关的脚本:
$( document ).ready(function(){
$( "li.page_menu_unselected" ).click(
function(){
$("li.page_menu_selected").toggleClass("page_menu_unselected page_menu_selected")
$( this ).toggleClass("page_menu_unselected page_menu_selected");
});
});
乍一看,当我开始测试我的代码时,似乎一切正常,因为我点击了未选择的元素并且类切换正确,即使是选择了类值的那个。
这个具有初始“选定”类值的列表项元素是链接 id 为 9 的列表。
问题是当我点击这个列表元素时,它不会切换回它的初始类,与所有其他列表项不同。
如果我在页面加载后尝试将我粘贴的代码推送到 chrome 控制台并尝试使用它,TADA 它就像一个魅力!
我认为这是一个 DOM 问题,但无法弄清楚它在哪里。
【问题讨论】:
-
提示:避免
ids以数字开头。不推荐。 -
您的代码中缺少分号。
-
@MelanciaUK 只是一个复制/粘贴问题 ;-) 但感谢您回答有关带数字的 id 的问题,不幸的是,我必须使用它们,因为该页面部分由 Wordpress 生成:D
-
在同一个
script块上,您可以循环遍历这些元素并修复它们的ids,方法是在它们前面加上一些string值。 -
@MelanciaUK,不,我不能,因为 id 由 wordpress 函数返回,并且来自没有任何文本引用但 id 和/或 menu_order int 值的特定页面。跨度>