【发布时间】:2015-11-05 21:59:21
【问题描述】:
我试图在使用 knockout.js 和 jquery 来点击一个元素时让它发生一些事情。我可以使用此代码更改不同元素的 css,例如身体的背景,但如果我尝试使用 this.css(something) 或 $(this).css(something)
<h4>Places</h4>
<ul data-bind="foreach: city">
<li data-bind="click: function(){$(this).css('color','yellow')}"><span data-bind="text: city"></span>, <span data-bind="text: state"></span>
</li>
</ul>
function AppViewModel() {
var self = this;
self.city = ko.observableArray([
{ city: 'Richmond', state: 'VA' },
{ city: 'Dallas', state: 'TX' },
{ city: 'Los Angeles', state: 'CA' }
]);
}
ko.applyBindings(new AppViewModel());
【问题讨论】:
-
数组中的对象拥有一个可观察属性然后使用
style绑定并让你的点击函数工作来设置该属性不是更有意义吗?那将是更多的MVVM。就像现在一样,this并不是你想象的那样。 -
我对 MVVM knockoutjs 相当陌生。我的最终目标是单击 LI 元素并放大谷歌地图上的标记。用你刚才提到的方法可以做到吗?如果生病了,请调查一下。
-
您只是想突出显示“选定项目”吗?为此使用
css绑定。 -
在任何绑定中,
$element指的是当前元素。见knockoutjs.com/documentation/binding-context.html
标签: jquery knockout.js inline-functions