使用Knockout.js单击时,向父元素添加一个类

时间:2014-08-22 15:45:58

标签: data-binding knockout.js

我有一个带有关闭按钮的div。关闭按钮有一个通过Knockout.js触发的函数,我想将一个类添加到此按钮的父级,即封装div。但是,在我的JS文件中(见下文),函数触发链接到数组中的对象。

HTML

<div>
    <button data-bind="click: $parent.myFunc">
</div>

JS档案

this.myFunc = function(e) {
//  this.addClass('boo'); does not work
}

我可以在此函数中关闭console.log,但似乎无法通过标准jQuery操作此元素。

3 个答案:

答案 0 :(得分:2)

执行此操作的方法是将css绑定添加到父级,然后在click事件触发的函数中对其进行操作:

<div data-bind="css: someClass">
    <button data-bind="click: myFunc">
</div>

在你的JS文件中:

this.someClass = ko.observable("");

this.myFunc = function(e) {
    this.someClass("boo");
}

答案 1 :(得分:-1)

因为你标记了jQuery,我假设你可以使用它,所以:

$('button').click(function(){
    $(this).parent().addClass('boo');
});

答案 2 :(得分:-1)

这是我在这里的第一个答案,但是如何看待jQuery的.parent()api? http://api.jquery.com/parent/

我对Knockout.js不熟悉,但也许这样的事情可能有用......

$('button').data('bind','click: $parent.myFunc').click(function(){

   $(this).parent().addClass('boo');   

 });