JavaScript-clearInterval在包含setInterval的方法之外

我有一个消息传递功能,可以在同一页面上多次调用它.每次调用时,都会在屏幕顶部显示一条新消息,并通过递增的全局值设置唯一的ID.

该函数的总体思路如下:

var messageTimer = function(msgid, duration) {
  ...
  var interval = setInterval(
    function() {
    ...
    },
    duration
  )
};

在上面的代码中,将创建一条新消息并应用一个计时器.如果计时器用完,该消息消失.但是,如果在关闭按钮以外的任何位置单击该消息,则计时器应停止并且该消息应保持直到手动关闭.

如何找到单击的消息框的间隔ID?可能同时有3个其他盒子打开.

$('body').on('click', '.msg', function() {

});

由于我只有一个可以触发点击的类,因此我想找到此方法的唯一可能方法是为消息框的ID设置一个附加字段?但是,此方法似乎不必要且混乱.

解决方法:

我会在存储间隔ID的消息上设置数据属性:

var messageTimer = function(msgid, duration) {
  ...
  var interval = setInterval(
    function() {
    ...
    },
    duration
  );
  $("#" + msgid).data("i", interval);
};

然后在您的邮件内容点击时回想一下:

$('body').on('click', '.msg', function() {
    clearInterval(parseInt($(this).data("i"), 10));
});
上一篇:小程序开发过程中的遇到的问题以及解决方法(1)


下一篇:在javascript中 setInterval()、clearInterval()、clearTimeout()等等常用的函数的含义