【发布时间】:2014-10-13 21:09:03
【问题描述】:
$(document).ready(function () {
$("#collapsible").click(function () {
$("h3 + *").toggle();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 id="collapsible">Technical Specs:</h3> <!-- Needs to be clickable -->
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
</ul>
<h3 id="collapsible">Ordering Information</h3>
<p>To order please call us at 0-000-000-0000</p>
根据大量 CSS 教程,我了解到 x + y 会选择紧跟在 x 之后的任何 y强>。所以我认为 h3 + * 会选择直接出现在我的 h3 之后的任何(通配符)元素。但它并没有像我预期的那样工作,为什么会这样?
【问题讨论】:
-
您有 2 个具有相同 ID 的元素。如果你点击
Ordering Information,那么不,它不起作用。 -
重复的
ids 是无效标记。在标记修复之前,行为是完全未定义的。 -
@Squint 好的,所以 CSS 选择器工作正常,它只是找到了两个可折叠项?如果您想将其作为答案,我会接受。
-
不,它只找到第一个。 jQuery 将在第一次匹配后停止,因为当您的选择器仅用于 ID 时,它使用
getElementById,而getElementById永远不会找到多个元素。
标签: javascript jquery css jquery-selectors