0

在 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 调用次数)

但有些他们不能一起工作

有任何想法吗???

提前致谢

4

2 回答 2

1

根据我的经验,当您超出了与 CakePHP 捆绑在一起的 Javascript 助手的基本要求时,最好完全删除助手的使用,并手动实现您的 javascript。frameworks JS helper 生成的代码并不复杂,可以很容易地复制和扩展。

查看您的代码示例,您似乎对 Javascript 和 jQuery 有很好的掌握,因此这将是您的最佳选择。

于 2012-08-07T22:29:32.687 回答
0

感谢您的帮助

我找到了我编辑蛋糕引擎的解决方案,在 JQueryEngineHelper 文件中 -> 事件函数我替换了“return false;” 用“event.preventDefault();” 问题不是我想的两种语法之间的冲突,而是“return false”;阻止执行下一个脚本的语句

再次感谢

于 2012-08-09T11:13:00.063 回答