javascript - 为什么我的事件没有为两个订阅者触发?

标签 javascript jquery html

我重新编写了分页插件,当我使用显式 Id 绑定(bind)到插件时,它可以完美地工作。但是,当我使用类名绑定(bind)插件时,“页面选择”事件仅针对一个元素触发。

所以,我的问题是......

为什么两个元素都没有触发触发器?

需要明确的是...触发器引发两次,但绑定(bind)不会运行两次...这很明显,因为控制台仅写入一次!

代码位于:
The JS Fiddle

违规区域是:

<script type="text/javascript">
    $(document).ready(function () {

        var pageSize = 5;
        $('.grid-bar-pager').pagination({
            itemsPerPage: pageSize,
            numberDisplayEntries: 10,
            numEdgeEntries: 2,
            maxEntries: 10
        });

        $('.grid-bar-pager').data('pagination').bind("pageSelected", function (event, args) {
            console.log("pageSelected"); // <--- THIS ONLY FIRES once?
        });
    });
</script>

最佳答案

我现在看到问题了。您将像这样绑定(bind)事件处理程序:

$('.grid-bar-pager').data('pagination').bind( ... );

.data()的调用将仅返回第一个匹配元素的Controller对象。您应该在 .each() 循环中执行该绑定(bind),以便可以绑定(bind)到每个 Controller 对象:

$('.grid-bar-pager').each(function() {
  $(this).data('pagination').bind( ... );
});

关于javascript - 为什么我的事件没有为两个订阅者触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9685243/

相关文章:

javascript - block 元素移除时平滑过渡,纯JS

javascript - 使用 Web Audio API 的音频 react 视觉

php - 如何使用 uploadify 为每个上传的文件获取唯一名称

javascript - 如何将值传递给函数并继续执行

javascript - 单击上一个/下一个按钮,我想突出显示下一个或上一个图像

javascript - jQuery:打印嵌套数组中多个键的所有值

javascript - ngRepeat/ngIf 改变 DOM 时的回调

html - 为什么我的图像在大多数浏览器中都能正确定位,但在 IE 中却不能?

javascript - 如何缩放 Canvas 并保持其在屏幕上的位置?

javascript - 随机移动图像不会移动