2011-12-26 3 views
0

Я не могу понять, как скрыть теги верхнего диапазона. У меня есть следующий код JQuery, который подставляет пролетных метки, сообщения об ошибках в виде:JQuery Hiding Prepend Elements

$('.mcEmail').each(function() { 
     var mcEmailCheck = $(this).val(); 
     var mcEmailRegex = /^([\w-\.][email protected]([\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 и ничего не работает. Не могу скрыть, исчезнуть, удалить и т. Д. Что я делаю неправильно?

Спасибо!

+0

К сожалению, я понял это. Если я помещаю событие click внутри функции, он работает. – user1002039

ответ

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

или

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

Спасибо! Это прекрасно и то, что я хотел узнать. – user1002039

0

Что о создании первой пяди, а затем добавить и манипулировать им после того, как:

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

... 

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

Надеется, что это помогает! :)

+0

Да, это отличная идея. Спасибо! – user1002039

+0

Рад помочь! Пожалуйста, обратите внимание на правильность ответа на вопрос, если он решил вашу проблему ... или, по крайней мере, upvote! :) –

1

В какой версии 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