Javascript clearInterval在包含setInterval的方法之外
我有一个可以在同一页面上多次调用的消息传递功能。每次调用它时,屏幕顶部都会出现一条新消息,消息的唯一ID由递增的全局变量设置 该功能的总体思路如下:Javascript clearInterval在包含setInterval的方法之外,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,我有一个可以在同一页面上多次调用的消息传递功能。每次调用它时,屏幕顶部都会出现一条新消息,消息的唯一ID由递增的全局变量设置 该功能的总体思路如下: var messageTimer = function(msgid, duration) { ... var interval = setInterval( function() { ... }, duration ) }; 在上面的代码中,将创建一条新消息并应用计时器。如果计时器用完,消息将消失。但是
var messageTimer = function(msgid, duration) {
...
var interval = setInterval(
function() {
...
},
duration
)
};
在上面的代码中,将创建一条新消息并应用计时器。如果计时器用完,消息将消失。但是,如果在除“关闭”按钮之外的任何位置单击消息,则计时器应停止,消息应一直保留到手动关闭
如何找到单击的消息框的间隔ID?可能有3个其他箱子同时打开
$('body').on('click', '.msg', function() {
});
因为我只有一个类来触发click by,所以我认为找到它的唯一可能的方法是为消息框的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));
});
你在使用html5吗?可以向节点添加自定义数据属性。此功能的javascript API已被描述。显然,您必须将
interval
存储在某个地方。如果你只有一个(或一小部分)这样的间隔是并行的,你可以简单地使用一个全局变量(或数组或对象)。谢谢你的帮助。