2013-03-19 49 views
0

我有一个表格,在这里查看:http://dev.calgunsfoundation.org/get-help/hotline/jQuery的不影响正确的项目

而且,我有一些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(e).siblings('.ginput_container input:email').before(fielddesc); 

没有按似乎根本不起作用。

(它目前网站本身的注释。)

当我使这条线,形式不出来。当我禁用它时,一切正常(但当然'输入电子邮件'和'确认电子邮件'标签没有正确显示。

当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> 

看来我的目标是正确的,我想输入:电子邮件,并将当前输入下面的标签移到输入上面,但显然我做错了。

+0

鸡蛋里挑骨头,e是正常用于事件对象,使您的代码混淆。 – epascarello 2013-03-19 02:08:23

+0

对不起。我吮吸jQuery。 :( – DrDavid 2013-03-19 02:13:50

+0

就像@epascarello说的那样,这是一个挑剔的问题,但是当你对jQuery有更多的了解时,肯定会记住它,就像jQuery一样简单,它仍然需要时间来完全包围你的头部 – patricksweeney 2013-03-19 02:18:06

回答

2

:电子邮件不是有效的:选择器 - 这是问题的根源 jQuery(e).siblings('.ginput_container input: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]') 
+0

当我改变它的时候, t加载所有 – DrDavid 2013-03-19 02:24:35

+2

他没有选择它,他正在创建一个jQuery包装内存div – basarat 2013-03-19 02:25:47

+0

基本上,我想要电子邮件标签“输入电子邮件”和“确认电子邮件”显示在输入框上方 – DrDavid 2013-03-19 02:41:49