【问题标题】:Attaching an event to CPagination change in Yii AFTER new page has been rendered渲染新页面后,在 Yii 中将事件附加到 CPagination 更改
【发布时间】:2011-06-18 18:58:33
【问题描述】:

这可能是一个新手问题,所以我希望它会很容易回答!我已经为此苦苦挣扎了将近一个星期..非常感谢任何帮助。

我有一个 CListView,我正在使用集成的 cpagination。我有一个由 onload 事件触发的 javascript 函数,它根据特定条件绘制此 clistview 的某些项目。但是,当用户更改页面时不会触发此事件,因此很明显这是一个问题:因为项目仅在页面第一次加载时才被绘制。

现在,我已经做到了这一点:我学会了如何处理 jquery 事件,所以我有了这个:

    $('body').delegate('li', 'click', function(event) {
    alert("next");
    paintMyLigas();
});

这样,每次单击下一个、上一个或任何其他分页按钮时,都会调用此函数。弹出警报,我什至在paintMyLigas() 函数中添加了一些警报,这些警报也会弹出。但是,我的物品不会再次上漆。我相信这可能是因为在呈现新页面(cpagination)之前触发了此事件。这是我被卡住的地方(本周第 n 次):我怎样才能让这个事件在之后触发?或者谁能​​指出我能够解决这个问题的任何其他方向?我需要帮助!! :)

【问题讨论】:

    标签: jquery pagination yii event-delegation


    【解决方案1】:

    如果您正在寻找在每次更新 CListView(使用 AJAX 自动处理)后执行自定义 JS 代码的方法,那么 afterAjaxUpdate 属性就是您想要的钩子。

    例如,尝试设置afterAjaxUpdate = 'js:paintMyLigas'。这是你想要的吗?

    【讨论】:

    • Didnt work.. but I dont 认为我正在更新 CListView,我只是想转到下一页。 This post 完美地描述了我的问题,但是解决方案是t posted clearly enough (at least for me, since i already admitted to being a newbie), and so it wasnt 足以让我摆脱困境。也许你可以帮助我理解它! :) 非常感谢您的回答!