0

私は、ユーザーが個人のアカウントだけでなく、チームや課題を作成できるようにするサービスを開発しています。各チームとチャレンジには一意の「ownerID」があり、各ユーザーには「userID」があります。メインのユーザースプラッシュページは、チーム、チャレンジ、設定の3つのアコーディオンで構成されており、選択すると一連のボタンが表示されます。ボタンをクリックすると、空のdivに別のページのデータが入力されます。そして、私は前述の問題に遭遇します。チャレンジの外部ページデータを読み込んだ後、ドロップダウンリストと、選択に応じてユーザー参加ボタンまたはチーム参加ボタンのいずれかが含まれます。問題は、どちらかのボタンをクリックしてから関数を呼び出せるようにしたいのですが、次のようには言えません。

$('#userJoin').on("click", function() {
                var challengeID = $('#challengeSelect').val();
                var userID = $('#userID').val();
                if (challengeID != 0 && userID != 0) {
                    joinUserToChallenge(challengeID, userID);
                }
            });

これは、その関数が現在document.readyセクションにあるためだと思いますが、これをJSファイルに統合する方法については空白を描いています。いつものように、どんな助けでも大歓迎です。

4

3 に答える 3

1

私があなたを正しく理解しているかどうかはわかりませんが、ここに解決策があります - ロードされたコンテンツの特定の要素にイベントを添付する方法:

$(ElementWhichContainsLoadedContent).on('click', 'ButtonSelector', function()
{
    // Your code
});
于 2012-07-17T21:00:58.103 に答える
1

ボタンでコンテンツをロードする ajax コードのコールバックに配置すると、この関数が機能するはずです。 .on()ページのロード時に DOM にある要素のみを認識し、ページのロード時に存在する親にタグ付けしない限り、挿入された要素をキャッチしません。

ただし、関数を作成し、ajax コールバックを使用してバインドすることで、問題を解決できます。

于 2012-07-17T21:04:17.367 に答える
1

あなたの問題を正しく理解したので、これはjQueryのdelegateメソッドを使用する必要がある正確なケースです: jQuery delegate method。ドキュメントからの説明:

ルート要素の特定のセットに基づいて、現在または将来、セレクターに一致するすべての要素の 1 つ以上のイベントにハンドラーをアタッチします。

jQuery 1.7 より前には というメソッドがありましたがlive、現在は非推奨になっているため、使用する必要があります。delegate

于 2012-07-17T21:14:44.010 に答える