javascript - 如何选择一个一次使用 javascript 或 jQuery
问题描述
我有以下由传单生成的代码。Leaflet 没有在其 HTML 中使用正确的语法,因此这有点困难。
我希望创建<button>
与每个元素相对应的元素,<input>
这样我就可以触发它们而不必处理在传单顶部应用样式。
<div class="leaflet-control-layers-base">
<label>
<div>
<input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157">
<span> All Activities</span>
</div>
</label>
<label>
<div>
<input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157">
<span>
<span id="icons1">Beaches</span>
</span>
</div>
</label>
<label>
<div>
<input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157">
<span>
<span id="icons2">Wading pools</span>
</span>
</div>
</label>
<label>
<div>
<input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157">
<span>
<span id="icons3">Swimming pools</span>
</span>
</div>
</label>
</div>
解决方案
您可以使用以下命令选择所有这些输入querySelectorAll
:
const inputs = document.querySelectorAll("input.leaflet-control-layers-selector");
这给了你一个NodeList
,你可以通过forEach
(在现代浏览器中)循环或索引到 vialength
和[]
。
例如,添加一个按钮:
const list = document.querySelectorAll("input.leaflet-control-layers-selector");
for (const input of list) {
input.insertAdjacentHTML(
"afterend",
"<button type=button>Some Button</button>"
);
}
<div class="leaflet-control-layers-base">
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> All Activities</span></div>
</label>
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> <span id="icons1">Beaches</span></span></div>
</label>
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> <span id="icons2">Wading pools</span></span></div>
</label>
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> <span id="icons3">Swimming pools</span></span></div>
</label>
</div>
对于稍旧的浏览器,您可能需要使用forEach
,甚至在更旧的浏览器上,您可能需要 polyfill forEach
。这个答案详细介绍了那部分事情。
或者,如果您想要button
s 末尾的span
s:
const list = document.querySelectorAll("input.leaflet-control-layers-selector");
for (const input of list) {
input.nextElementSibling.insertAdjacentHTML(
"afterend",
"<button type=button>Some Button</button>"
);
}
<div class="leaflet-control-layers-base">
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> All Activities</span></div>
</label>
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> <span id="icons1">Beaches</span></span></div>
</label>
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> <span id="icons2">Wading pools</span></span></div>
</label>
<label>
<div><input type="radio" class="leaflet-control-layers-selector" name="leaflet-base-layers_157"><span> <span id="icons3">Swimming pools</span></span></div>
</label>
</div>
等等。
推荐阅读
- php - 树枝中的方法来替换 php 中的“include”
- python - Django搜索表单返回整个模型
- evolutionary-algorithm - DEAP - 通过工具箱操作失去的健身价值
- python - 两个相关列表的列表理解,输出按第二个列表排序
- c# - 遍历响应
>>$"{_applicationUris.GranularKVInfo}/{_KVlId}/kv"); - python - 如何让 MagicMock 返回多个值
- python - keras.preprocessing.image.array_to_img 如何工作
- c# - Xamarin Android 请求运行时权限不起作用
- angular - ng2-smart-table 动态更新列表
- php - 如何在 PECL 上设置或跳过包配置?