2017-06-29 30 views
1

在我的网页我想跟踪至极按钮,用户在obdervable点击:设置观察到的值单击

self.action = ko.observable(); 

我可以编写一个函数setAction与每个按钮上点击一个参数调用它,东西像这样:

self.setAction = function (action) { 
    self.action(action); 
} 

但我不知道是否有办法做到这一点,而不必每次调用setAction功能?

+0

[淘汰赛事件代表团(http://www.knockmeout.net/2012/11/revisit-event-delegation-in-knockout-js.html) –

回答

2

你可以做到这一点在线:

<button type="button" class="btn" data-bind="click: action.bind($data, 'btn-name')">btn-name</button> 

或通过实际的按钮对象

<button type="button" class="btn" data-bind="click: action.bind($data, this)">btn-name</button> 

或者,如果您的问题是,你必须每次都写这个点击事件,你可以向每个按钮添加一个类并添加一个事件侦听器来设置该操作。

<button type="button" class="btn actionBtn">btn-name</button> 

$(".actionBtn").click(function(){ 
    var btn = $(this); 
    viewModel.action(btn); 
}); 
+0

你是说像使用jQuery的属性?像按钮的ID一样。 $(this).attr('id') –

+0

'btn'的值看起来像'div#cancel.tab.actionBtn.tabSelected'有没有办法只得到这个名字? – user3378165

+0

关于如何实现这一点的任何想法? – user3378165