事件似乎有时只会起火?

Sea*_*een 3 javascript jquery twitter-bootstrap knockout.js jquery-events

代码

我在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);
});
Run Code Online (Sandbox Code Playgroud)

目标

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

问题

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

我究竟做错了什么?

Dim*_*rov 6

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

我想扩展一下并解释一下差异,当你使用event.target你获得调度事件的元素(实际元素字面意思) - 就像在你的情况下,如果你点击<i></i>嵌套在按钮内的元素元素,它将返回<i></i>通知,如果您返回代码event.target并单击按钮的边缘,它将按预期工作.

如果event.currentTarget您正在获取元素,则绑定您的侦听器(在您的情况下是实际按钮).

  • 谢谢!就是这样.不知道currentTarget的存在.工作喜欢魅力. (2认同)