Javascript 选择元素旁边的文本(几乎)

Javascript 选择元素旁边的文本(几乎),javascript,jquery,jquery-selectors,label,next,Javascript,Jquery,Jquery Selectors,Label,Next,我需要包装一个单选按钮和它旁边的文本在一个标签,只是为了更方便用户 几天前我遇到了一个类似的问题,我有一个复选框,在我有了一个span元素之后。我可以包装这两种元素 我有这个HTML: <span class="Attribute"> <input type="radio" name="vMONHRDREM" value="S"> <script type="text/javascript">gx.dom.setAttribute("vMONH

我需要包装一个单选按钮和它旁边的文本在一个标签,只是为了更方便用户

几天前我遇到了一个类似的问题,我有一个复选框,在我有了一个span元素之后。我可以包装这两种元素

我有这个HTML:

<span class="Attribute">
    <input type="radio" name="vMONHRDREM" value="S">
    <script type="text/javascript">gx.dom.setAttribute("vMONHRDREM","gxoch0","if(!(gx.evt.jsEvent(this))) return false;");</script>
    Ativado

    <input type="radio" name="vMONHRDREM" value="N">
    <script type="text/javascript">gx.dom.setAttribute("vMONHRDREM","gxoch0","if(!(gx.evt.jsEvent(this))) return false;");</script>
    Desativado
</span>

但它不起作用。它不会返回任何东西。如果我更改为$this.next.text,我将获得脚本文本。

输入元素没有文本内容,您拥有的是rogue textnodes,您需要将它们与输入一起定位,然后用标签标记将它们包装起来:

$("input[type=radio]").each(function(){
    var text = $(this).next().get(0).nextSibling.nodeValue;
});
$('.Attribute input[type="radio"]').each(function() {
    $(this).addBack()
           .add($(this).next('script')[0].nextSibling)
           .wrapAll('<label></label>');
});

伟大的这让我看到了价值观。但是如何包装这两个元素呢?如果我使用…nextSibling.wrap。它甚至只包装文本节点。
$('.Attribute input[type="radio"]').each(function() {
    $(this).addBack()
           .add($(this).next('script')[0].nextSibling)
           .wrapAll('<label></label>');
});