【发布时间】:2012-10-15 11:54:31
【问题描述】:
我是 Knockout 的新手,但使用 jQuery 已经有一段时间了。在我目前正在进行的一个项目中,我们正在使用 Knockout 视图模型。
然而,我们也使用了一些 jQuery 插件用于选项卡、覆盖等。当不使用 KO 或在带有data-bind 的容器外部使用时,这些插件都可以正常工作。例如,当触发器放置在绑定到 KO 的容器中时,jQuery Tools 的 Overlay 插件将不起作用。
这是一个从未触发的 jQuery 事件的简单示例:
<div data-bind="with: dummyData">
<a class="alert" href="#">Never fires!</a>
</div>
<div>
<a class="alert" href="#">Works!</a><br /><br />
<a href="#" data-bind="click: $root.showHidden">Show hidden link.</a>
</div>
这是 JavaScript:
var myViewModel = function () {
var self = this;
self.dummyData = ko.observable(false);
self.showHidden = function () {
self.dummyData(true);
};
};
ko.applyBindings(new myViewModel());
$(document).ready(function () {
$('a.alert').click(function () { alert('Clicked!'); });
});
KO 是用不同的内容替换第一个容器还是更新 DOM 使 jQuery 点击事件不再起作用?
我知道 KO 有自己的click: 事件。我经常使用它,但现在我只想知道是否仍然可以将点击事件与 jQuery 绑定,特别是因为我想将它与一些 jQuery 插件一起使用,这些插件将自身绑定到对象的点击事件上。
【问题讨论】:
-
您的代码对我有用。这是小提琴:jsfiddle.net/fGX3d/1
-
抱歉,是的,这行得通。我已经更新了你的小提琴:jsfiddle.net/fGX3d/2。单击“显示隐藏”链接,隐藏的 上的 jQuery 事件永远不会触发...
标签: javascript jquery knockout.js