Jquery knockoutjs通过单击事件获取元素id

Jquery knockoutjs通过单击事件获取元素id,jquery,knockout.js,knockout-2.0,Jquery,Knockout.js,Knockout 2.0,我正在使用knockoutjs,目前我的视图中有如下内容: <img id="myTab1" data-bind="click: pressedTab.bind($data, '#myTab1')" src="images/image1.png"></img> 这是这样写的: 元素ID:#myTab1 但是,在click事件中发送img id的名称过于重复。有没有一种方法可以发送img id而不显式地重新写入它?您实际上可以通过KO click处理程序访问事件对象 &l

我正在使用knockoutjs,目前我的视图中有如下内容:

<img id="myTab1" data-bind="click: pressedTab.bind($data, '#myTab1')" src="images/image1.png"></img>
这是这样写的:

元素ID:#myTab1


但是,在click事件中发送img id的名称过于重复。有没有一种方法可以发送img id而不显式地重新写入它?

您实际上可以通过KO click处理程序访问事件对象

<button id="somebutton" data-bind="click: log">Click Me </button>

var ViewModel = function() {
    this.log = function(data, event) {
        console.log("you clicked " + event.target.id);
    }
};
ko.applyBindings(new ViewModel());
点击我
var ViewModel=函数(){
this.log=函数(数据、事件){
log(“您单击了”+event.target.id);
}
};
应用绑定(新的ViewModel());


希望这能有所帮助。

madcapnmckay的答案并不完全正确。您可以更好地使用currentTarget:当您有一个包含嵌套元素的div时,它将返回原始绑定元素而不是子元素

看到这个了吗

更新


正如@Ryan提到的-event.currentTarget不适用于IE8。因为这正是我所需要的。谢谢!如果按钮上有类似这样的图标,
单击我
我同意,这将不安全。vm.yourFn=function(data,event){var$target=$(event.currentTarget)..非常有效。请注意,如果您需要支持IE<9,则currentTarget不适用于这些版本。下面的链接适用于我的敲除绑定
<button id="somebutton" data-bind="click: log">Click Me </button>

var ViewModel = function() {
    this.log = function(data, event) {
        console.log("you clicked " + event.target.id);
    }
};
ko.applyBindings(new ViewModel());
var target = (event.currentTarget) ? event.currentTarget : event.srcElement;