【发布时间】:2013-03-19 02:04:22
【问题描述】:
我有一个表格,可以在这里查看:http://dev.calgunsfoundation.org/get-help/hotline/
还有,我有一些 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>
似乎我的目标是正确的,我想要输入:电子邮件并将当前位于输入下方的标签移动到现在位于输入上方。但是,显然我做错了什么。
【问题讨论】:
-
nitpick,e 通常用于事件对象,使您的代码混乱。
-
对不起。我很讨厌 jQuery。 :(
-
就像@epascarello 说的那样,这是一个吹毛求疵的选择,但当您了解更多有关 jQuery 的信息时一定要记住它。像 jQuery 一样简单,但要完全理解它仍然需要时间。
标签: javascript jquery wordpress forms