私はKnockoutを初めて使用しますが、かなり長い間jQueryを使用しています。私が現在取り組んでいるプロジェクトでは、Knockoutビューモデルを使用しています。
ただし、タブやオーバーレイなどにいくつかのjQueryプラグインも使用します。これらはすべて、KOを使用しない場合、またはコンテナの外部で.を使用して使用する場合に正常に機能しdata-bind
ます。たとえば、トリガーがKOにバインドされたコンテナー内に配置されている場合、jQueryToolsのオーバーレイプラグインは機能しません。
トリガーされない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にバインドできるかどうかを知りたいだけです。