$(".sect-tasklist li.is-running").each(function(){
var $this = $(this),
taskID = $(this).data("task-id");
if ( /*if elem has already been cloned*/ ) {
console.log("already cloned, don't clone it again");
} else {
$(this).clone().appendTo(".helper-timers");
}
});
每个任务 (li.is-running) 都有自己的唯一 ID,应用于 data-task-id 属性。代码应该将每个任务复制到一个临时 div (.helper-timers) 中,但是如果一个任务已经被克隆并存在于 .helper-timers 中,它显然不需要再次复制。
解决了
对于任何想知道的人,我设法像这样解决它。
(function(){
jQuery.fn.cloneRunningTimers = function() {
$(".sect-tasklist li.is-running").each(function(){
var $this = $(this),
taskID = $this.data("task-id");
if ( $(".helper-timers li.task-id-" + taskID).length ) { // if exists
// already cloned, don't clone again
} else { // if doesn't exist
$this.clone().appendTo(".helper-timers"); // clone
}
});
}; // fn cloneRunningTasks
})();
然后我获取任务的部分功能包括:
$(".helper-timers li").each(function(){
var $this = $(this),
taskID = $this.data("task-id");
if ( $(".sect-tasklist li.task-id-" + taskID).length ) { // if exists it task list
$this.remove(); // delete it from helper list
}
});
据我所知,这确保了同一任务永远不会同时出现在两个地方。