jQuery 在 .each 中查找之前的元素标签

Posted

技术标签:

【中文标题】jQuery 在 .each 中查找之前的元素标签【英文标题】:jQuery find the previous elements label in .each 【发布时间】:2015-03-25 15:24:33 【问题描述】:

我有一个带有输入项的表单。我所做的是获取表单中每个输入元素的标签。我已经这样做了,但我遇到的麻烦是……对于每个没有标签的输入元素,我想将它们的标签设置为前一个标签。我模拟了我在 jsFiddle here 中寻找的内容。

myItems.each(function()
    label = $('label[for="' + $(this).attr('id') + '"]').text();

    if(label.length <= 0)
      // code I'm looking for goes here   
    
);

更新:我更新了 JSFiddle 以显示我正在尝试完成的内容的真实表示以及使用 .prev() 的尝试。 JSFIDDLE LINK

【问题讨论】:

您在选择器中忘记了inquiry-ref_checklabel = $('label[for=inquiry-ref_check"' + $(this).attr('id') + '"]').text(); 似乎您正在寻找 jquery 对象的最接近或父母方法,这将允许您浏览在 DOM 中输入的祖先中找到的第一个 @JeremyThille 我想要全部,这只是众多输入元素之一。 @Louis 我都试过了,但都没有得到预期的结果。 你能用你试过的方法更新你的问题和 jsfiddle 吗? 【参考方案1】:

这是我不使用jQuery.prev()的解决方案,因为你不知道前一个是否有标签(也许你需要prev()之前的那个)。

var label = '';
var myItems = $('#panel').find('input');
var previousLabel;
myItems.each(function()
label = $('label[for="' + $(this).attr('id') + '"]').text();

if(label.length <= 0) 
    // ensure that a previous label exists
    if (typeof(previousLabel) != 'undefined')
    
        label = previousLabel;

        // Here you can use your previous label
    
 else 
    previousLabel = label;

);

Fiddle updated

【讨论】:

这正是我所需要的。谢谢@bviale【参考方案2】:

如果我正确理解了这个问题,它会是这样的:

var label, myItems = $('#panel input');

myItems.each(function(i, e)
    var l = $('[for="'+e.id+'"]');
    label = l.length ? l : label;
    l.length || $(e).before(label.clone().attr('for', e.id));
);

JSFiddle

【讨论】:

【参考方案3】:

这是一个解决方案,必须稍微修改一下 html,这对你有用吗?

var myItems = $('#panel').find('input');
var label;

myItems.each(function()
    if($(this).parent().find('label').length)
        label = $(this).parent().find('label');
     else 
        var newLabel = document.createElement('label');
        newLabel.innerHTML = label.html();
        $(this).parent().prepend(newLabel);
            
);

http://jsfiddle.net/mp4sdfvy/10/

【讨论】:

以上是关于jQuery 在 .each 中查找之前的元素标签的主要内容,如果未能解决你的问题,请参考以下文章

jQuery$.each循环遍历详解,各种取值对比,$.each遍历数组对象Dom元素二维数组双层循坏类json数据等等

jquery each() 怎么遍历到 我动态创建div 中的p标签中的内容 求解

如何,使用 JQUERY .EACH() 但不用于元素,用于变量

Ajax 之前的 JQuery .each 处理

jQuery parseXML, .each()

jQuery