javascript - 事件有时似乎只触发?

标签 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);
});

目标

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

问题

  • 有时文本会更新为正确的单词;有时它会更新但为空值。
  • 我找不到规律或押韵/原因;有时在空白之后,单击另一个元素,然后单击之前返回 null 的元素现在返回正确的文本。

我做错了什么?

最佳答案

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

当您使用 event.target 时,我想详细解释一下差异您将获得调度事件的元素(实际元素 字面意思)- 就像您的情况一样,如果您单击 <i></i>嵌套在按钮元素中的元素,它将返回 <i></i>请注意,如果您将代码返回到 event.target然后单击按钮的边缘,它将按预期工作。

event.currentTarget的情况下您正在获取要将监听器绑定(bind)到的元素(在您的情况下是实际按钮)。

关于javascript - 事件有时似乎只触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17904695/

相关文章:

javascript - 按嵌套属性对字典的键进行排序

Javascript 用颜色突出显示所有排除的字符

JQuery 复选框失败(为什么它不更改 "checked"attr?)

javascript - js 下拉菜单不起作用

javascript - html &lt;input&gt; 无法将值传递给 URL,除非使用 codeigniter 的 input_form

javascript - Bootstrap 轮播图像未加载

javascript - 如何在 Angular 5 中安全地存储本地存储

javascript - 如何将来自服务器的数据设置为这种动态形式?

javascript - 如何在中间的 ng-repeat 中插入新行(Angularjs + twitter bootstrap + jade)

javascript - 使用 AngularJS 执行存储为字符串的 javascript 函数