3

コード

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 値です。
  • パターンやリズム/理由が見つかりません。空白になった後、別の要素をクリックしてから、以前に null を返した要素をクリックすると、正しいテキストが返されることがありました。

私は何を間違っていますか?

4

1 に答える 1

6

$(event.target)useを使用する代わりに$(event.currentTarget).

少し拡張して違いを説明したいと思います。使用するevent.targetと、イベントをディスパッチした要素(実際の要素は文字通り)を取得します-あなたの場合のように<i></i>、ボタン内にネストされている要素をクリックすると要素の場合、コードを返してボタンの端をクリックすると、期待どおりに機能するという<i></i>通知が返されます。event.target

リスナーをバインドしている要素を取得している場合event.currentTarget(あなたの場合は実際のボタンです)。

于 2013-07-28T03:34:18.727 に答える