jquery - 使用 jquery 添加独立于 knockoutjs 绑定(bind)的事件处理程序

标签 jquery knockout.js

我有一个<ul>填充有 foreach 的元素捆绑。这个<ul>随着嵌入它的模板被重新渲染,它又会在不同的时间重新创建。这工作得很好。

但是,在某些情况下,我想在 knockoutjs 之外向此列表添加其他行为(例如,记录滚动事件)。我不希望此代码成为绑定(bind)的一部分,因为它只是有条件地注入(inject)(例如,在运行实验时)。我想我可以做类似的事情

$('ul.doclist').scroll(function() { 
    // log scrolling here
});

在我的 DOM 初始化之后,但这不起作用,因为 knockoutjs绑定(bind)替换我将滚动事件绑定(bind)到的元素。是否有相当于 .live() 的内容用于滚动?或者,是否有另一种方法可以将事件处理程序动态注入(inject)到不依赖静态编码属性的 knockout 绑定(bind)机制中?

编辑:2012 年 8 月 7 日下午 5:41:我尝试使用 delegate()方法,但无法弄清楚如何指定选择器来查找我的深层嵌套 ul .

编辑:2012 年 8 月 7 日下午 6:31:我目前正在使用 jquery 1.4.4 并在 Chrome 中进行测试。

最佳答案

我最终实现了以下模式:

在我的模板中:

<ul class="doclist" data-bind='foreach: rows, event: {scroll: window.viewModel.notifyOfScrollEvent}'>
</ul>

在我的 View 模型中:

this.documentScrolled = ko.observable();
this.notifyOfScrollEvent = function() {
    self.documentScrolled.valueHasMutated();
}

在我的条件代码中:

viewModel.documentScrolled.subscribe(function() {
    console.log('scrolling');
});

不像我想要的那样解耦,但比显式引用更好。

关于jquery - 使用 jquery 添加独立于 knockoutjs 绑定(bind)的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856009/

相关文章:

javascript - 放大/缩小和旋转 div,平滑过渡

php - 编码表单数据的最佳方式是什么?

javascript - 使用 jQuery/javascript 进行 HTML 表格转换

javascript - jquery 数据表的自定义 ko 绑定(bind)

javascript - KnockoutJS 验证 - 模型变量正则表达式的行为不符合预期

javascript - 如何使用选项卡外部的链接浏览 jquery 选项卡

javascript - PHP 将 JSON 对象返回给 Javascript [AJAX CALL] 不起作用

html - knockout.js 数据绑定(bind)不能同时具有模板和值

javascript - knockout JS 3.0.0 : Display Map object

datagrid - knockout : The SimpleGrid component