0

ページがあり、javaスクリプト関数をcustom.jsファイルで定義しています(jQueryを使用しています)。</body>タグの前の本文の最後にJSファイルを配置しました

私のページには次のようなdiv要素があります。<div id="userinfo"></div> ページが読み込まれると、JSファイルはそれに外部ページをフェッチします。

外部ページにはこのような要素があります<div id="login"></div>

私のJSファイルでは、ユーザーloginがモーダルウィンドウをクリックすると、ユーザーにログインフォームを表示する関数を定義しました。

しかし、外部ページをロードすると、JSファイルが機能しません!! 要素が見つからないようです。

案内してください!:)

custom.jsファイルの一部:

jQuery(document).ready(function($) {

 $('#userinfo').load('CustomerOptions.asp');

  (function() {
     $('#login').click(function(event){
         // something to do
     });
  })();

});
4

4 に答える 4

1

コードの現在のバージョンは、DOMで使用可能になる前でもクリックイベントハンドラーを#userinfoにバインドしようとしています(要素はload asynch呼び出しを介してDOMに追加されるため)。

これを試して:

$('#userinfo').load('CustomerOptions.asp', function() {
     $('#login').click(function(event){
         // something to do
     });
});
于 2012-07-17T16:56:00.097 に答える
1

あなたはで使用しようとするかもしれませ

$('#userinfo').on('click','#login',function(){
    //Click logic here
});
$('#userinfo').load('CustomerOptions.asp');
于 2012-07-17T16:56:47.963 に答える
0

DOMに存在する前に#loginにイベントを割り当てているため、機能しません。このような場合は、「ライブ」イベントを使用する必要があります。ライブイベントでは、ターゲット要素がDOMに存在する必要はありません。

jQuery(document).ready(function($) {
   $('#userinfo').load('CustomerOptions.asp');

  $('#userinfo').on('click','#login',function(event){
     // something to do
  });
})();

編集:@ManselUKが指摘しているように、「live」は非推奨であり、「on」を使用する必要があります。

于 2012-07-17T16:58:19.913 に答える
-1

または、代わりに.click()の代わりに.live()を使用することもできます。

http://api.jquery.com/live/

于 2012-07-17T16:56:51.550 に答える