JQuery 隐藏前置元素

发布于 2024-12-23 02:32:48 字数 738 浏览 2 评论 0原文

我不知道如何隐藏前置跨度标签。我有以下 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七颜 2024-12-30 02:32:48
$('.mcCustResponse').live("click", function(){
    $(this).fadeOut(1000);
});

或者

$('.mcCustResponse').bind("click", function(){
    $(this).fadeOut(1000);
});
$('.mcCustResponse').live("click", function(){
    $(this).fadeOut(1000);
});

or

$('.mcCustResponse').bind("click", function(){
    $(this).fadeOut(1000);
});
爱冒险 2024-12-30 02:32:48

你使用的是哪个版本的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.7

http://api.jquery.com/live/ - .live() before 1.7

捂风挽笑 2024-12-30 02:32:48

首先创建跨度,然后添加和操作它怎么样:

var span = '<span class="mcCustResponse">- Incorrect Email format!</span>';
span.hide();
$(this).parent().prepend(span);

...

$(this).parent().find('span').show();

希望这有帮助! :)

What about creating the span first, then adding and manipulating it after:

var span = '<span class="mcCustResponse">- Incorrect Email format!</span>';
span.hide();
$(this).parent().prepend(span);

...

$(this).parent().find('span').show();

Hope this helps! :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文