2

我写了一个php脚本index.php,如下所示。此脚本将在加载时创建一些超链接。如果我单击这些超链接中的任何一个,它将加载example.phpindiv标记的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's 已加载到#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 回答