我使用 Harvest 的 Javascript 库来增强<select>
元素。
https://github.com/harvesthq/chosen
该库<div>
与原始<select>
. 这<div>
包含选择的增强 UI:
<select multiple id="my-list" class="chosen">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
<div class="chosen-container chosen-container-multi ..." id="my-list_chosen">
<ul class="chosen-choices">
<li class="search-choice">
<span>Three</span>
<a class="search-choice-close" data-option-array-index="2"></a>
</li>
<li class="search-choice">
<span>Five</span>
<a class="search-choice-close" data-option-array-index="4"></a>
</li>
....
</ul>
...
</div>
<div>
鉴于我只知道原始<select>
元素,我想检索这个 Chosen UI 容器 ( )。挑战在于 HTML 文档中可能有超过 1 个多选。
最简单的情况是<select>
元素具有 ID,因此选择的 UI 容器具有相同的 ID,后缀为_chosen
,如您在上面的代码片段中所见。
但是 Chosen 并不要求元素具有和 ID 属性才能工作。那么<select>
没有ID的多个元素呢?识别选择的 UI 容器的正确方法是什么?
[编辑]对于那些想知道为什么我不能假设有一个“id”属性的人<select>
:我写了一个小插件来处理 Chosen 的选择顺序,我不能强迫用户在<select>
while Chosen上放置一个 ID不需要它本身。