Javascript jQuery不影响正确的项

Javascript jQuery不影响正确的项,javascript,jquery,wordpress,forms,Javascript,Jquery,Wordpress,Forms,我有一个表格,可在此处查看: 我有一些jQuery: <script type="text/javascript"> jQuery(document).ready(function() { jQuery('.ginput_container label').each(function(i,e){ fielddesc = jQuery('<div>').append(jQuery(e).clone()).remo

我有一个表格,可在此处查看:

我有一些jQuery:

<script type="text/javascript">
      jQuery(document).ready(function() {

          jQuery('.ginput_container label').each(function(i,e){
              fielddesc = jQuery('<div>').append(jQuery(e).clone()).remove().html();
              jQuery(e).siblings('.ginput_container input:email').before(fielddesc);
              jQuery(e).siblings('.ginput_container input:text').before(fielddesc); //moves sub label above input fields
              jQuery(e).siblings('.ginput_container select').before(fielddesc); //moves sub label above select fields (e.g. country drop-down)
              jQuery(e).siblings('.ginput_container .gfield_radio input').after(fielddesc); //keep label above radio buttons
              jQuery(e).siblings('.ginput_container .gfield_checkbox input').after(fielddesc);
              jQuery(e).remove();
          });

      });
    </script>
似乎根本不起作用

(目前该网站本身已对此进行了评论。)

当我启用该行时,表单不会显示。当我禁用它时,一切正常(但“输入电子邮件”和“确认电子邮件”标签当然不会正确显示)

jQuery未运行时的代码如下所示:

<li id="field_3_3" class="gfield gfield_contains_required">
    <label class="gfield_label" for="input_3_3">
        Email
            <span class="gfield_required">
                *
            </span>
    </label>
    <div class="ginput_complex ginput_container" id="input_3_3_container">
        <span id="input_3_3_1_container" class="ginput_left">
            <input type="email" name="input_3" id="input_3_3" value="" tabindex="17">
                <label for="input_3_3">
                    Enter Email
                </label>
        </span>
        <span id="input_3_3_2_container" class="ginput_right">
            <input type="email" name="input_3_2" id="input_3_3_2" value="" tabindex="18">
                <label for="input_3_3_2">
                    Confirm Email
                </label>
        </span>
    </div>
</li>
  • 电子邮件 * 输入电子邮件 确认电子邮件

  • 似乎我的目标是正确的,我希望输入:电子邮件,并将当前位于输入下方的标签移动到输入上方。但是,显然我做错了什么。

    :电子邮件不是有效的:选择器--这是问题的根源
    jQuery(e).同级('.ginput\u容器输入:email')

    对于这两个输入,您可以使用id选择器:

    jQuery(e).siblings('#input_3_3, #input_3_3_2')`
    
    或通用:

    jQuery(e).siblings('input[type=email]') 
    
    文本/电子邮件通用:

    jQuery(e).siblings('input[type=email], input[type=text]') 
    

    吹毛求疵,e通常用于事件对象,这会使您的代码混乱。对不起,我对jQuery的理解很差:(就像@epascarello所说的,这是一个挑剔的问题,但当你进一步了解jQuery时,一定要记住它。尽管jQuery很简单,但你仍然需要时间来完全理解它。当我更改它时,页面根本不会加载。他没有选择它。他正在围绕内存分区创建一个jQuery包装器。基本上,我喜欢电子邮件标签“Enter email”和“确认电子邮件”显示在输入框上方而不是下方。更新上面的小提琴以反映您的更改。您使用上面的before()是正确的,但不需要删除before()之前的原始对象如果您提供元素,则移动dom中的对象。注意:电子邮件不是有效的选择器-选择器的完整列表在这里:--如果您想跳过ID并更通用,您可以这样做:
    $('input[type=email]')
    如果您希望这样做,首先是电子邮件+文本:
    $('input[type=email],input[type=text]')
    jQuery(e).siblings('input[type=email], input[type=text]')