为addclass创建绑定处理程序

时间:2013-11-13 08:15:05

标签: jquery model-view-controller knockout.js

如何创建一个将div添加到div

的绑定处理程序
<div class="control-group" id ="nameControlGroup">
    <label>Name</label>
    <div class="controls">
        <input type="text" data-bind="value:scheduleClause">
    </div>
</div> 
<div class="control-group">                 
    <div class="controls">
        <button class="btn btn-primary" data-bind = "click:addScheduleClause">Save</button>
    </div>
</div>    

我需要一个绑定处理程序,以便每次单击按钮时它都会向nameControlGroup div添加一个类

4 个答案:

答案 0 :(得分:1)

您应该在ViewModel中创建一个CssClass observable属性,并在addScheduleClause方法中更新它:

function ViewModel() {
    var self = this;
    self.CssClass = ko.observable();

    self.addScheduleClause = function() {
       self.CssClass("CSS CLASS");
    }
}

在html部分中,您应该为div nameControlGroup添加绑定:

<div class="control-group" id ="nameControlGroup" data-bind="css: CssClass">
    <label>Name</label>
    <div class="controls">
        <input type="text" data-bind="value: Name">
    </div>
</div> 

答案 1 :(得分:0)

像这样使用:

document.getElementsByClassName('btn').addEventListener("click",function(){

    document.getElementById('nameControlGroup').setAttribute("class", "your_class_to_add");

});

答案 2 :(得分:0)

假设您使用此按钮:

<button class="btn btn-primary" data-bind = "click:addScheduleClause">Save</button>

然后在你的“addScheduleClause”函数中添加一行代码

$('#nameControlGroup').addClass('newClassName');

我不认为为此制作绑定处理程序是个好主意。但如果你坚持(这样的事情应该有用):

ko.bindingHandlers.myspecialbutton = {
  init: function (element, valueAccessor){
    $(element).on('change', function(event){
      $('#nameControlGroup').addClass('newClassName');
    });
  }
};

甚至更好,亚历山大写的。

答案 3 :(得分:-1)

这应该作为jQuery解决方案:

jQuery(document).ready(function(){
     jQuery('button').click(function(){
        jQuery('#nameControlGroup').addClass('YOUR CLASS NAME');
     });
});