0

先頭に追加するスパン タグを非表示にする方法がわかりません。フォームのエラー メッセージとしてスパン タグを先頭に追加する次の JQuery コードがあります。

$('.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);
});

他のすべての検証にも同じことが使用されます。エラーメッセージは問題なく表示されます。これらのスパンタグでほとんど何でも試すことができますが、何も機能しません。非表示、フェードアウト、削除などができません。何が間違っていますか?

ありがとうございました!

4

3 に答える 3

1

どのバージョンの jquery を使用していますか? バージョンに応じて.live()またはを使用する必要があります。.on()問題は、ページが読み込まれたときに、クラス mcCustResponse を持つスパンが存在しないことです。あなたが持っているコードブロックは.click()、読み込み時にページ上の要素のイベントを登録するだけです. .live()またはを使用して、クラス mcCustResponse を持つすべての要素に現在および将来イベントを登録する関数を作成できます.on()

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

http://api.jquery.com/live/ - .live()1.7 より前

于 2011-12-26T22:31:36.490 に答える
1
$('.mcCustResponse').live("click", function(){
    $(this).fadeOut(1000);
});

また

$('.mcCustResponse').bind("click", function(){
    $(this).fadeOut(1000);
});
于 2011-12-26T22:31:53.030 に答える
0

最初にスパンを作成し、その後に追加して操作するのはどうですか:

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

...

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

お役に立てれば!:)

于 2011-12-26T22:31:01.810 に答える