我有一个消息传递功能,可以在同一页面上多次调用它.每次调用时,都会在屏幕顶部显示一条新消息,并通过递增的全局值设置唯一的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));
});