1

タイトルから理解できるかもしれませんが、ここに行きます:

私はファイルを持っています。そのファイルから、phpファイルから他のデータをロードします:

ファイル 1 html ファイル

<html>
     <head>
      <script type="text/javascript" src="js/jquery.js"></script>
      <script type="text/javascript">
          $(function() {
               $('#content').load('source.php');

               $("#link").click(function() {
                       alert('Message1!');
                       return false;
               });
          });
      </script>
     </head>

     <body>
           <div id="content"></div>
     </body>
</html>

ファイル source.php

<?php

for($i=1;$i<=10;$i++) {

     echo '<a href="#" id="link">Link '.$i.'</a>';

}

?>

コンテンツがphpファイルからロードされた後、このコード

$("#link").click(function() {
        alert('Message1!');
        return false;
});

読み込まれたコンテンツ (リンク) では機能しません。

この DOM がどのように機能するかを説明する必要があります。ロードされたコンテンツがアクティブな関数/コードと対話できないのはなぜですか?

4

3 に答える 3

3

jQuery < 1.7 を使用している場合は、live()またはdelegate()を使用する必要があります。

$("#link").live('click', function() {
        alert('Message1!');
        return false;
});

$("body").delegate('#link', 'click', function() {
        alert('Message1!');
        return false;
});

または、jqQuery > 1.7 を使用している場合はon()を使用します

$("body").on('click', '#link', function() {
        alert('Message1!');
        return false;
});

ページの読み込み後に追加された DOM オブジェクトへのイベントを処理します。

ID はページ上で一意である必要があることに注意してください。これは重要です。あなたがすることができます:

<?php

for($i=1;$i<=10;$i++) {

     echo '<a href="#" class="addedLinks" id="link'.$i.'">Link '.$i.'</a>';

}

?>

次に、クラス a セレクターを使用します

于 2011-11-28T10:48:13.160 に答える
2

たとえば、クリックの代わりにライブを使用する必要があります

$("#link").live('click', function() {
        alert('Message1!');
        return false;
});

編集 :

JQuery 1.7以降は非推奨になっていることがわかったので、次のような .on() 関数を使用する必要があります。

$("#link ").on("click", function(event){
    alert('Message1!');
    return false;
});

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

http://api.jquery.com/on/

于 2011-11-28T10:48:36.497 に答える
0

考えられる理由の 1 つは、ID がページ内の要素に対して一意である必要があるのに、10 個の要素を作成しているためです。

for($i=1;$i<=10;$i++) {
    echo '<a href="#" id="link">Link '.$i.'</a>';
}

そのため、各要素にインデックスを追加するidか、class=link代わりに作成してください。

于 2011-11-28T10:48:57.247 に答える