事件似乎只是偶尔发生



代码

我在http://jsfiddle.net/6vd5C/1/

有问题的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);
});

目标

每当有人点击提交按钮时,我都希望看到"当前类型"项目符号更新,以指示点击按钮上的标题。

问题

  • 有时文本会更新为正确的单词;有时它会更新,但为空值
  • 我找不到模式或韵律/理由;有时在为空之后,单击另一个元素,然后单击以前返回null的元素,现在返回正确的文本

我做错了什么?

不要使用$(event.target),而是使用$(event.currentTarget)

我想扩展一下并解释一下区别,当你使用event.target时,你得到的是调度事件的元素(实际元素)——就像在你的情况下,如果你点击嵌套在按钮元素中的<i></i>元素,它将返回<i></i>,注意如果您将代码返回到event.target并单击按钮的边缘,它将按预期工作。

event.currentTarget的情况下,您将获得将侦听器绑定到的元素(在您的情况下是实际的按钮)。

最新更新