2

index.php以下のようにphpスクリプトを書きました。このスクリプトは、ロード時にいくつかのハイパーリンクを作成します。これらのハイパーリンクのいずれかをクリックすると、 のタグで の出力がロードさexample.phpdivます。 のid="myDiv"出力example.phpは再びいくつかのハイパーリンクであり、これらのリンクをクリックしたときに jquery 関数を実行したいと考えています。この場合、私はalertこのjquery関数の中に与えましたが、そのjquery関数を実行していません。コード全体を以下に示します。この問題を解決するのを手伝ってください。

<?php
    $mainlinks = array("10.3.2.0","10.3.2.1","10.3.2.2");
    for($i=0;$i<count($items);$i++)
    {
        echo "<a class='likelink' href='javascript:void(0)'>$mainlinks[$i]</a>" . "<br>";
    }
?>

<html>
  <head>
    <script src="jquery/jquery-1.9.1.js"></script>
    <script type="text/javascript">
    $(function() {
       $('.likelink').click(function() {
         $('#myDiv').load("example.php");                                 
       });
    });
    $(function() {
      $('.sublink').click(function() {
           alert("hello");                                 
      });
    });
    </script>
  </head>
  <body>
    <div id="myDiv"></div>
  </body>
</html>

そして、これは私のexample.phpファイルです

<?php
  $sublinks = array("abcd","efgh","ijkl");
  for($i=0;$i<5;$i++)
  {
        echo "<a class='sublink' href='javascript:void(0)'>sublinks[$i]</a>" . "<br>";
  }
?>
4

2 に答える 2

2

sublinkインデックス ページが読み込まれるときに存在しないため、委任イベント登録モデルを使用してクリック イベントを処理する必要があります。

.on()を使用してクリック イベントを登録しsublinkます#myDiv

$(function() {
    $('#myDiv').on('click', '.sublink', function() {
        alert("hello");                                 
    });
});

更新:
基本的な説明は次のようになります... click()を使用してイベント ハンドラー メソッドを登録すると、コードの実行時に dom に存在する要素のみにハンドラーが追加されます。要素の動的な作成/読み込みを処理する場合、コマンドの実行時に要素が dom に存在しない可能性があるため、これは機能しません。

于 2013-05-08T07:24:03.067 に答える
0

あなたの問題では、ページがロードされたときにサブリンクが存在しません。クリックイベントを処理するには、委任されたイベントを使用する必要があります。

$(function() {
   $(document).on('click','.likelink',function(e) {
       e.preventDefault();
       $('#myDiv').load("example.php");                                 
   });
});

jquery.on()から

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが を呼び出す時点でページに存在している必要があります .on()。要素が存在し、選択できることを確認するには、ページの HTML マークアップにある要素のドキュメント対応ハンドラー内でイベント バインディングを実行します。新しい HTML がページに挿入されている場合は、要素を選択し、新しい HTML がページに配置された後にイベント ハンドラーを添付します。または、次に説明するように、委任されたイベントを使用してイベント ハンドラーをアタッチします。

委任されたイベントには、後でドキュメントに追加される子孫要素からのイベントを処理できるという利点があります。

また、 あなたphp codeは ありのまま の 中 に いる べきbodyですechoing.links

お気に入り

<body>
    <?php
        $mainlinks = array("10.3.2.0","10.3.2.1","10.3.2.2");
        for($i=0;$i<count($items);$i++)
        {
            echo "<a class='likelink' href='javascript:void(0)'>$mainlinks[$i]</a>" . "<br>";
        }
    ?>
</body>
于 2013-05-08T07:26:11.570 に答える