2つのボタンがあります。
クラスはselected
とunselected
です。jQueryを使用してボタンをクラスに追加したりクラスを追加したりすると、新しいクラスが追加されても機能しません。
マイCodePen:
http://codepen.io/leongaban/pen/iLBvs
例えば:それは選択されていないクラスの削除とそれにその選択したクラスを提供し、登録ボタンにその選択されていないクラスを与えるログインボタンをクリックしてください。
ここで問題は、register_unselected
クラスが機能しないことです。 unselected
クラスは、をクリックすると、アクションがjQuery内にあります。
灰色のボタンをクリックして青色に変えることができるはずです。しかし、最初のグレーのボタン(ログイン)をクリックした後、新しいグレーのボタンのレジスタは機能しません。
Chromeのインスペクタを使用すると、私のregister_unselectedクラスが追加されていることがわかりますが、クリック機能は機能しません。
任意のアイデア?どのようにこれにアプローチしますか?
// Login Tab (default : first)
$(".login_unselected").click(function(){
console.log('clicked login');
// Show Login Tab as selected
$(this)
.removeClass('login_unselected')
.addClass('login_selected');
// Show Register Tab as unselected
$(this).parent().find('#tab_register')
.removeClass('register_selected')
.addClass('register_unselected');
});
// Register Tab
$(".register_unselected").click(function(){
console.log('clicked register');
// Show Login Tab as selected
$(this)
.removeClass('register_unselected')
.addClass('register_selected');
// Show Register Tab as unselected
$(this).parent().find('#tab_login')
.removeClass('login_selected')
.addClass('login_unselected');
});
2つの単語: 'event delegation'、clickイベントは、バインド時にそのクラスを獲得する要素を探しません。そのクラスでページロード時に存在する要素だけを探します。クイックフィックスは '$(document).on( 'click'、 'class'、function(){// normal code})'で、 'document'を変更しない静的要素に置き換えます。 – Ohgodwhy
チップをありがとう! :D –
@ Lon現在賛否両論されている解決策を見て、現在使用しているコードの半分以下を使用してください。それの必要はありません。 – Dom