在使用ajax加载

时间:2017-02-20 02:28:45

标签: javascript jquery ajax

我使用Laravel 5.2来开发我的单页应用程序。我有add.blade.php并且在其中有脚本和edit.blade.php,它们具有相同的脚本,相同的类名和id。当我.load add.blade.php时,脚本运行正常。然后动态地.load edit.blade.php,这时在DOM及其脚本中删除了add.blade.php。但是它的脚本仍然不是我的edit.blade.php中的那个。

顺便说一句,我的活动是委派的。谢谢。

1 个答案:

答案 0 :(得分:1)

我认为在删除/替换包装<script>标记后,您希望jQuery代码失去它的效果。但它没有这种方式。

请考虑以下示例:

#script-wrapper{padding-left: 15px; border: solid 1px black; background-color: gold}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div id="script-wrapper">
  <h3> Script wrapper</h3>
  <p>foo() is defined in here</p>
  <script type="text/javascript">
    function foo() {
      alert("Foo");
    }
  </script>
</div>

<hr />

<input type="button" id="runFoo" value="Run foo()" />
<input type="button" id="removeScript" value="Remove script wrapper" />

<script type="text/javascript">
  jQuery("#runFoo").click(function () {
    foo();
  });

  jQuery("#removeScript").click(function () {
    jQuery("#script-wrapper").remove();
  });
</script>

在上面的示例中,我们在foo()元素中定义了函数#script-wrapper。您可以使用按钮运行此功能,或者使用另一个删除#script-wrapper。在这里您可以注意到,即使从DOM中删除#script-wrapper,也可以触发该函数。

如果您希望最终使用当前功能,可以手动“取消定义”它。从示例中删除#script-wrapper不会为您执行“undefinition”。

foo = void(0); //this will set foo to undefined