检查这个JS小提琴。 http://jsfiddle.net/jclamp/Nf7Fc/3/
Name的标签是通过jquery创建的,然后可以使用它的父字段位置来设置它的位置。
电子邮件标签是通过表单验证创建的。相同的jquery应该能够设置它的位置,但事实并非如此。为什么呢?
使用:
$('#name').after('<label class="error" for="name">I can create this label via jquery and then move it\'s position.</label><br>');
$('label.error').css('left',
function() {
return $('input[name='+$(this).attr('for')+']' ).offset().left;
}
);
不起作用:
$("#registerForm").validate();
$('label.error').css('left',
function() {
return $('input[name='+$(this).attr('for')+']' ).offset().left;
}
);
答案 0 :(得分:1)
$('label.error').css('left', function() {
// find input element assigned to the label
var inputName = $(this).prop('for'); // <--- here
var inputElement = $('input[name=' + inputName + ']' );
// you can use logging to see which element jQuery actually found:
console.log(inputElement);
return inputElement.offset().left;
});
以下是一个工作示例:http://jsfiddle.net/JjYPR/3/
希望这有帮助。
我对你的代码有一些注意事项。 jsfiddle中的代码根本不起作用。元素名称存在一些错误,当您按下提交按钮时,没有任何内容被验证,但发生了另一个错误。下次发布问题时,您可能会记住以下提示:
然后人们更容易帮助你。 ;)