jQuery .load()函数只更改内容

时间:2016-04-15 12:36:11

标签: javascript php jquery

我已经搜索了其他类似的问题,但没有答案可以解决我的问题。

这是我的jQuery:

$("i[id^='delete']").click(function() {
  $(".container.tim-container").load("getreservations.php");
});

这是生成更新内容的php:

$count = 0;

echo '<div class="container tim-container">';
echo "<div>";
echo '<h1 class="title">View Reservations</h1>';
echo "</div>";
echo '<div class="reservations">';

foreach ($noDupes as $facilities)
  {
    echo '<div class="col-sm-12 left-column">';
    echo '<h2 id="facility_name'.$count.'" class="facility-title">'.$facilities["facility_name"].'</h2>';
    echo '</div>';

    foreach ($facilities["dates"] as $dates => $dateValues)
    {
      echo '<div class="col-sm-3 left-column">';
      echo '<h4 id="facility_date'.$count.'" class="facility-title">'.$dateValues["date"].'</h4>';
      echo '</div>';

      echo '<div class="col-sm-9 right-column">';
      echo '<ul>';
      foreach($dateValues["timeslots"] as $timeslots => $timeslotValues)
      {
        echo '<p id="start_time'.$count.'" hidden>'.$timeslotValues["start_time"].'</p>';
        echo '<p id="end_time'.$count.'" hidden>'.$timeslotValues["end_time"].'</p>';

        echo '<li class="row time-slot text-align">';
        echo '<h4 class="display_inline">'.$timeslotValues["start_time"].':00 - '.$timeslotValues["end_time"].':00</h4><i id="delete'.$count.'" class="fa fa-trash-o"></i>';
        echo '</li>';
        $count++;
      }
      echo '</ul>';
      echo '</div>';
    }
  }

  echo '</div>';
  echo '</div>';

即使它不是很漂亮的PHP代码,它也可以。问题是jQuery中的.load()函数只能运行一次。另外,我也尝试在.on('click', function(){})元素上使用<i>。我怎样才能使它不止一次起作用?

1 个答案:

答案 0 :(得分:4)

使用活动delegation。它用于绑定现在存在的所有匹配元素和动态创建的元素。

  

注意:使用事件委派时,应将其附加到静态元素。在这里,我将其附加到document。您可以将其绑定到任何其他静态元素。将其绑定到document会有一些性能问题。我不知道页面中哪些元素都是静态的,所以我使用了document

$(document).on('click', "i[id^='delete']", function() {
    $(".container.tim-container").load("getreservations.php");
});