更改动态创建的标签的DOM位置
Change DOM position of dynamically created labels
我需要为一些CMS生成的标签和输入字段设置样式。这是每个元素的标记(总共有五个)。
<br>
<label>City of birth:</label>
<br>
<input type="text" maxlength="200" name="os5">
我需要为每个输入添加类,这很容易。我还需要将每个标签放在相应的输入之后。举例来说,我可以用这个代码针对每个标签。
$('label:nth-of-type(2)').css('color','blue');
通过这种方式,我可以针对每五个标签,但我找不到移动每个标签的方法,就在相应的输入字段之后。
您可以使用.each
对集合进行迭代,以分别获得每个集合,此时.nextAll
将允许您找到合适的以下<input>
和.after
,可以用于移动其标签。
$('label:nth-of-type(2)')
.css('color', 'blue')
.each(function () {
var $label = $(this);
var $input = $label.nextAll('input').eq(0);
$input.after($label);
});
请记住,适当的做法可能是更好地识别标签,并确保它们与使用<label>
的for
属性的表单字段相关联(但选择更好的类名):
<label class="move-label" for="city-of-birth">City of birth:</label>
⋮
<input type="text" name="os5" id="city-of-birth" maxlength="200" />
然后你可以这样做,我认为这更好=)
var labels = Array.prototype.slice.call(
document.getElementsByClassName('move-label')
);
labels.forEach(function (label) {
var associatedElement = document.getElementById(label.htmlFor);
label.parentNode.insertBefore(associatedElement, label.nextSibling);
});
…尽管jQuery也能工作:
$('.move-label').each(function () {
var $input = $(document.getElementById(this.htmlFor));
$input.after(this);
});
…如果你在打高尔夫球:
$('.move-label').each(function () {
$('#' + this.htmlFor).after(this);
});
您必须找到以下input
同级:
$('label:nth-of-type(2)').each(function() {
$(this).insertAfter($(this).nextAll('input:first'));
});
相关文章:
- 注入<脚本>标签给它一个合适的位置
- 如何使用位置获取滚动功能获取 HTML 中的元素标签
- 如何找到内部标签的位置并将其聚焦
- 使用正则表达式修改标签位置
- 为什么鼠标光标和红线在将缩放 0.5 添加到正文标签时位置不同
- 无论如何可以检查 html 标签的位置
- 离开悬停后如何将P标签保持在上一个位置
- 如何阅读新标签位置.href.match?使用 Javascript
- 垂直标签:删除没有jQuery或固定位置属性的UL和DIV中断
- 使用 javascript 查找文本中 HTML 标签的位置,最好不使用正则表达式
- 背景大小设置为包含的正文标签上的位置和缩放元素
- 窗口位置主题标签语法错误在问号后未读取
- 停止浮动标签重置回原始位置
- 是否存在标签“1”的优选位置;标签为“;,使用jQuery Mobile
- 如何使用散列标签(“一个名字”)去页面上的位置,但在顶部说明一个固定的元素
- 如何修复标签的位置,使它们不会在DevExpress js图表中重叠
- AngularJS+Ionic:标签取决于滚动位置
- Highcharts条形图数据标签位置
- 道场堆叠条形/柱形图表标签位置不正确
- Safari扩展获取标签位置或标识符