Javascript jQuery插件不能与Knockout一起使用
我是新手,但已经使用jQuery有相当一段时间了。在我目前正在进行的一个项目中,我们使用了淘汰视图模型 但是,我们也为选项卡、覆盖等使用了几个jQuery插件。当不使用KO时,或者在容器外部使用Javascript jQuery插件不能与Knockout一起使用,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我是新手,但已经使用jQuery有相当一段时间了。在我目前正在进行的一个项目中,我们使用了淘汰视图模型 但是,我们也为选项卡、覆盖等使用了几个jQuery插件。当不使用KO时,或者在容器外部使用数据绑定时,这些插件都可以正常工作。例如,当触发器被放置在绑定到KO的容器中时,jquerytools的Overlay插件就不起作用 下面是一个简单的示例,其中包含一个从不触发的jQuery事件: <div data-bind="with: dummyData"> <a clas
数据绑定时,这些插件都可以正常工作。例如,当触发器被放置在绑定到KO的容器中时,jquerytools的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>
KO是用不同的内容替换第一个容器还是更新DOM使jQuery click事件不再工作
我知道KO有自己的点击:
事件。我经常使用它,但现在我只想知道是否仍然可以用jQuery绑定click事件,特别是因为我想用它来绑定对象的click事件的一些jQuery插件。用于绑定click事件:
$(document).ready(function () {
$('a.alert').live('click', function () {
alert('Clicked!');
});
});
这里是工作小提琴:在引擎盖下,KnockoutJS认为带有
绑定的是模板
绑定的特例!每当viewmodel中的可观察对象发生更改时,
的每个子代都会被删除并重新创建,当这些DOM元素被删除时,jQuery处理程序也会被删除。在高于模板绑定级别的级别上使用.on
是解决此问题的一种方法。不过,对我来说,点击点击绑定似乎是一个更好的选择。你的代码对我来说很有用。这是提琴:对不起,是的,这很有效。我已经更新了你的小提琴:。单击“Show hidden”链接,hidden上的jQuery事件将永远不会触发……正如快速补充一样,jQuery已经弃用了.live
,而倾向于与父选择器参数一起使用。Artem的答案仍然有效,只是不是推荐的风格。因此,与其说是$('a.alert').live('click'
),不如说是$('body')。在('a.alert','click'
)。
$(document).ready(function () {
$('a.alert').live('click', function () {
alert('Clicked!');
});
});