【问题标题】:adding jQuery event to Ajax Links in CakePHP在 CakePHP 中将 jQuery 事件添加到 Ajax 链接
【发布时间】: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 助手是一个没有正确更改的助手。

标签: jquery ajax cakephp


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    感谢您的帮助

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

    再次感谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 2013-05-26
      • 2013-08-20
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      相关资源
      最近更新 更多