jquery - 用标签包装文本

标签 jquery html

我试图让 jQuery 在输入文本之前在“未标记”元素上设置标签。但是,它似乎是在上一个标签上设置标签。我无法在代码中手动设置标签,因为它是自动生成的,而且插件开发人员已删除表单字段上的标签。这是我目前拥有的其中一个字段的代码:

<div id="_dgx_donate_donor_first_name" class="text-input-section">
  <div id="_dgx_donate_donor_first_name-error-message" style="display:none" class="seamless-donations-error-message-field"></div>
  First Name:
  <input type="text" name="_dgx_donate_donor_first_name" value="" size="20" data-validate="required" id="text_dgx_donate_donor_first_name" class="text-box">
</div>

当我选择 div 中的第一项时,它会将标签包裹在 _dgx_donate_donor_first_name-error-message div 周围。如果我说选择第二个元素,它会选择 input 字段。我想用中间的文字。我的 jQuery 目前是:

$('#dgx-donate-container .text-input-section').each(function(){
  var c = 'text'+$(this).find('input[type="text"]').attr('name');
  $(this).find('input[type="text"]').attr('id', c).addClass('text-box');
  $(this).find(':first-child:not(#donation_header)').next().wrap('<label for="'+c+'" />');
});

不漂亮,但到目前为止它似乎工作。 (我想我还需要更改 ID,但由于我只是将标签用于样式目的,所以我认为我现在应该没问题。)

关于如何选择文本有什么建议吗?每个字段的格式与此完全相同。

最佳答案

$(function(){
    var div = $("#_dgx_donate_donor_first_name");
    var txt = $.trim(div.text());
    var txtNodes = div.contents().filter(function(){
        return this.nodeType === 3;
    }).remove();
    //console.log(txtNodes);
    //div.text("");    //don't do this, it will empty your div
    var input = div.find("input");
    var name = input.attr("name");
    var lbl = $("<label for='" + name + "'>" + txt + "</label>");
    lbl.insertBefore(input);

});

jsfiddle example

关于jquery - 用标签包装文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007757/

相关文章:

javascript - 如何使用 javascript 过滤复杂的 json 对象?

html - 如何强制表单元素在浏览器中呈现相同的内容?

jquery - 二次点击时神秘消失的 Div - 菜单

javascript - 如何检测浏览器是否支持此 HTML5 功能

jquery - Reload $(document).ready(function() ajax页面重新加载后

jquery - 使用 CSS/JQuery 制作动画

javascript - 如何修复 easytab jquery-plugin 中的绑定(bind)表排序器

javascript - 如何使用 ajax 和 json 将图像呈现为下拉列表?

javascript - Div 出现在页面加载时

html - 清除内部 float