【发布时间】:2012-08-07 15:47:11
【问题描述】:
为了在 CakePHP 中将 jQuery 事件添加到 Ajax 链接,我使用了以下方式,
<?php echo $this->Js->link(TITLE, array('controller' => 'CONTROLLER', 'action' => 'ACTION'), array('update' => '#DIV_ID', 'class' => 'FixAjaxReload') ); ?>
变成一个 HTML 链接和下面的 JQuery
jQuery('a.FixAjaxReload').on('click', FUNCTION);
另一方面,我需要在链接中添加一个事件,
(function(){jQuery("body").on('click', 'a.FixAjaxReload', function(event){
var linkTo = jQuery(this).attr('href');
if (navigator.appName.indexOf("Internet Explorer") > 0) {
window.location.hash = '!' + linkTo.replace(window.baseUrl, '/');
} else {
window.history.pushState('', linkTo, linkTo);
}
});})();
- 我在第二个事件中使用了选择器语法,因为链接可能被 ajax 调用加载
- 我在第一个事件中使用了其他语法(即没有更改 CakePHP 方式),因为如果我这样做了,该事件将被多次调用(以前的 Ajax 调用次数)
但有些不能一起工作
有什么想法吗???
提前致谢
【问题讨论】:
-
我发现没有像
Js这样的助手,我的工作会更好。如果 CakePHP 核心发生重大变化,它还可以为我节省一些时间。当我最近升级时,我知道升级 shell 可能会忘记更改某些代码。 Javascript 助手是一个没有正确更改的助手。