有一个页面view,其代码包含在 中Pjax,在 下运行Yii2。该脚本已添加到页面js中。我发现了 js 代码的一个有趣的特性:它可以正常工作,但是如果您返回到您离开的页面(或者通过单击或返回上一页),则 js 代码将停止工作。
<?php Pjax::begin(); ?>
// some code
<?php Pjax::end(); ?>
<?php
$js = '$(function(){alert(123);})';
$this->registerJs($js, $this::POS_END);
?>
行为是可预测的 - DOM 正在重建,但我找不到解决重新安装 js 处理程序问题的方法,或者以保留其性能的方式安装它们。
请告知是否可以解决此问题。
解决方案是在 DOM 重建期间不会更改的元素上安装处理程序,即所谓的委托事件处理:
在表单的情况下,解决方案可能如下所示:
有关委派处理的详细信息可以在文档中找到。