2011-12-26 81 views
0

我不知道如何隱藏預先的span標籤。我有以下的jQuery代碼是預先考慮span標記爲錯誤消息的形式:JQuery隱藏的前置元素

$('.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 2011-12-26 22:30:44

回答

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

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

謝謝!這是完美的,我想了解的。 – user1002039 2011-12-26 22:37:55

0

什麼首先創建的跨度,然後加入後操縱它:

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

... 

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

希望這有助於! :)

+0

是的,這是一個好主意。謝謝! – user1002039 2011-12-26 22:35:36

+0

很高興幫助!如果它解決了你的問題,請考慮將答案標記爲正確的......或者至少得到讚賞! :) – 2011-12-26 22:36:58

1

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