JQuery Скрытие элементов Prepend - PullRequest
0 голосов
/ 27 декабря 2011

Я не могу понять, как скрыть теги prepend span.У меня есть следующий код 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);
});

То же самое используется для всех других проверок.Сообщения об ошибках отображаются нормально.Я могу почти все попробовать на этих тегах span, и ничего не работает.Не могу спрятаться, исчезнуть, удалить и т. Д. Что я делаю не так?

Спасибо!

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

Какую версию jquery вы используете?Вам нужно использовать .live() или .on() в зависимости от версии.Проблема в том, что ваши промежутки с классом mcCustResponse не существуют при загрузке страницы.Блок кода, который вы используете с .click(), будет регистрировать только события для элементов на странице во время загрузки.Вы можете создать функцию, которая будет регистрировать события для всех элементов в классе mcCustResponse сейчас и в будущем, используя .live() или .on().

http://api.jquery.com/on/ - .on() jquery 1.7

http://api.jquery.com/live/ - .live() до 1,7

1 голос
/ 27 декабря 2011
$('.mcCustResponse').live("click", function(){
    $(this).fadeOut(1000);
});

или

$('.mcCustResponse').bind("click", function(){
    $(this).fadeOut(1000);
});
0 голосов
/ 27 декабря 2011

Как насчет создания диапазона, а затем добавления и манипулирования им после:

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

...

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

Надеюсь, это поможет! :)

...