2015-10-11 45 views
0

我得到这个功能,每秒添加一个div。然后它会在屏幕上移动,我希望它在屏幕之外移除div。当我创建它们时,是否有可能将这样一个定时器“附加”到div上?jquery,删除创建的div如果外部屏幕宽度

function deployRandom(){  
     $(".bottomEvents").append("<div class='floatingDiv'>hello world</div>") 
     $(".floatingDiv").animate({ 
      marginLeft: "+=250px", 
     }, 1000);  
    } 

回答

1

您可以创建每格追加到一个数组,并检查他们的位置与独特的调度计时器:

var divsArray = []; 

function clearOutsideDivs() 
{ 
    var newDivsArray = []; 

    for (var i=0; i<divsArray.length; ++i) 
    { 
     var currentDiv = divsArray[i]; 
     var currentDivMarginLeft = parseInt(currentDiv.css('margin-left'), 10); 

     if (currentDivMarginLeft > $(window).width()) 
      currentDiv.remove(); 
     else 
      newDivsArray.push(currentDiv); 
    } 

    divsArray = newDivsArray; 
} 

function deployRandom(){ 
    var generatedDiv = $("<div class='floatingDiv'>hello world</div>"); 
    $(".bottomEvents").append(generatedDiv); 
    divsArray.push(generatedDiv); 

    $(".floatingDiv").animate({ 
     marginLeft: "+=250px", 
    }, 1000, clearOutsideDivs); 
} 

的jsfiddle例如here

+0

对不起,迟到的回应。难以置信的答案,非常感谢。完美的作品:) – JonCode

2

主要思想是: 您必须知道您的div是否超出范围(“超出窗口大小”)。

首先,你必须知道窗口宽度:

$(window).width(); 

比你必须了解你的DIV位置向左

currentDiv.position().left + currentDiv.width() 

,比如果你的DIV超出范围,则必须将其隐藏。

这里小例子:https://jsfiddle.net/RomanGroovyDev/pyzuLtzd/3/