单击外部时清除会话存储

时间:2015-08-10 05:17:44

标签: session meteor

我正在使用Meteor并使用以下代码将_id存储到会话中:

 'click .players': function(){
      var playerId = this._id;
      Session.set('selectedPlayer', playerId);

上述会话是在用户点击<li class="players">

时设置的

我想在用户点击<li class="players">

之外时清除会话数据

最好的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可以这样做:

'click :not(".players")': function(ev){
  Session.set('selectedPlayer',null);
}

:not() css selector docs

答案 1 :(得分:0)

此解决方案有点受限,因为选择器:not("li.players")位于模板中,这意味着您可以单击模板外部的某个位置,它不会触发单击事件。建议将click事件放在body模板下,但是当你单击html部分时它仍然不会触发click事件。

if (Meteor.isClient) {
  Template.body.events {
    'click :not("li.players")': function(e) {
      Session.set('selectedPlayer', null);
    }
  }
}

更确切地说,这可能会帮助你。

if (Meteor.isClient) {
  $(document).click(function(e) {
    e.stopPropagation();
    var target = $(e.target);
    var players = $('li.players');
    if (!players.is(target) && players.has(target).length === 0) {
      Session.set('selectedPlayer', null);
    }
  })
}