0

この関数は正常に機能します(#new_userはフォームのIDです):

$("#new_user").submit(function(e) {
  e.preventDefault();
  return $(".terms").dialog("open");
});

しかし、クラスを追加しようとすると、たとえば次のようになります。

$("#new_user.team-registration").submit(function(e)

そうではありません。

form#new_userにクラスチーム登録またはアーティスト登録もある場合にのみ機能させるにはどうすればよいですか?それらの1つだけになることができます。ありがとう!

4

2 に答える 2

3

行が実際に処理されるときにクラスがフォーム要素に割り当てられていないため、セレクターは何も返しません...実行できるのは.delegate()関数を使用することです(以前に.live()で実行することを期待していたのと同様です)。ここに例があります:

$("body").delegate("#new_user.team-registration, #new_user.artist-registration", "submit", function() {
  return false; // in jQuery this preventsDefault and stops all propagation 
});

または、クラスを追加した時点でフォーム要素を変数に格納し、それを参照することもできます(このようにして、DOMを2回トラバースする必要はありません)。

詳細はこちらの.delegate()で読むことができます

于 2012-06-08T14:38:44.020 に答える
0
$("#new_user").submit(function(e) {
    if(!$(this).hasClass('team-registration') && !$(this).hasClass('artist-registration')) {
        return;
    }
    e.preventDefault();
    $('.terms').dialog('open');
})
于 2012-06-08T14:28:27.017 に答える