JQuery 隐藏前置元素
我不知道如何隐藏前置跨度标签。我有以下 JQuery 代码,它在表单中将 span 标记作为错误消息添加到前面:
$('.mcEmail').each(function() {
var mcEmailCheck = $(this).val();
var mcEmailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if(!mcEmailCheck.match(mcEmailRegex)) {
mcResponse('- Incorrect Email format!', true);
$(this).parent().prepend('<span class="mcCustResponse">- Incorrect Email format!</span>');
$(this).addClass('mcError').fadeOut().fadeIn();
}
});
然后我尝试以下操作:
$('.mcCustResponse').click(function(){
$(this).fadeOut(1000);
});
所有其他验证都使用相同的方法。错误消息显示正常。我几乎可以在这些跨度标签上尝试任何东西,但没有任何效果。无法隐藏、淡出、删除等。我做错了什么?
谢谢你!
I can't figure out how to hide prepend span tags. I have the following JQuery code that prepends span tags as error messages in a form:
$('.mcEmail').each(function() {
var mcEmailCheck = $(this).val();
var mcEmailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if(!mcEmailCheck.match(mcEmailRegex)) {
mcResponse('- Incorrect Email format!', true);
$(this).parent().prepend('<span class="mcCustResponse">- Incorrect Email format!</span>');
$(this).addClass('mcError').fadeOut().fadeIn();
}
});
Then I try the following:
$('.mcCustResponse').click(function(){
$(this).fadeOut(1000);
});
The same is used for all other validation. The error messages show up fine. I can pretty much try anything on these span tags and nothing works. Can't hide, fade out, remove etc. What am I doing wrong?
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
或者
or
你使用的是哪个版本的jquery?您需要根据版本使用
.live()
或.on()
。问题是页面加载时,类 mcCustResponse 的跨度不存在。.click()
的代码块只会在加载时为页面上的元素注册事件。您可以创建一个函数,使用.live()
或.on()
现在和将来将事件注册到 mcCustResponse 类的所有元素。http://api.jquery.com/on/ -
.on() jquery 1.7
http://api.jquery.com/live/ -
.live ()
1.7之前Which version of jquery are you using? You need to use
.live()
or.on()
depending on the version. The problem is that your spans with class mcCustResponse don't exist when the page loads. The code block you have with.click()
will only register events for the elements on the page at load time. You can make a function that will register events to all elements with class mcCustResponse now and in the future using.live()
or.on()
.http://api.jquery.com/on/ -
.on()
jquery 1.7http://api.jquery.com/live/ -
.live()
before 1.7首先创建跨度,然后添加和操作它怎么样:
希望这有帮助! :)
What about creating the span first, then adding and manipulating it after:
Hope this helps! :)