我在http://jsfiddle.net/6vd5C/1/
设置了一个jsFiddle有问题的JavaScript代码:
var global_loggedOnUser = "User1";
$(function(){
var viewmodel = (function(){
this.feedbacktype = ko.observable("None");
this.currentPage = ko.observable(location.href);
this.currentUsername = global_loggedOnUser;
this.updateFeedbackType = function(item, event)
{
var newText = $(event.target).children("span").text();
feedbacktype(newText);
};
return{
pageUserIsOn : currentPage,
theUser : currentUsername,
feedbackType: feedbacktype
};
})();
ko.applyBindings(viewmodel);
});
每当有人点击提交的按钮时,我都希望看到“当前类型”项目符号点更新,以指示所点击按钮上的标题。
我做错了什么?
答案 0 :(得分:6)
而不是使用$(event.target)
使用$(event.currentTarget)
。
我想扩展一下并解释一下差异,当你使用event.target
时,你得到了调度事件的元素(实际元素字面意思) - 就像在您的情况是,如果您单击嵌套在按钮元素中的<i></i>
元素,它将返回<i></i>
通知,如果您将代码返回到event.target
并单击边缘你的按钮会按预期工作。
在event.currentTarget
的情况下,你得到了你的侦听器绑定的元素(在你的情况下是实际的按钮)。