2010-12-10 9 views
1

, was ich habe ist jetzt:Wie führe ich eine Funktion aus, die nur ausgeführt wird, wenn die Maus NICHT über ein bestimmtes div-Objekt schwebt?

function() 
     { 
      setInterval("getSearch()",10000); 
     getSearch(); 

     } 
); 

Aber ich möchte dieses Intervall, wenn der Mauszeiger in ein div auf meiner Website platziert pausieren. Wie greife ich dieses Problem an? Sicherlich muss ich dem Div eine ID geben .. Aber einige Eingabe, wie man den javascript/jquery Teil macht, wird sehr geschätzt.

EDIT: Mehr meiner Code .. Ich bin mir nicht ganz sicher, wo Sie den Code in den Antworten innerhalb dieses einzufügen:

$ ( function() { setInterval ("getSearch()", 10000); getSearch();

 } 
); 

TwitterCache = {}; 

Funktion getSearch() {

 var url = "http://search.twitter.com/search.json?q=test&refresh=6000&callback=?"; // Change your query here 
     $.getJSON 
     (
      url, 
     function(data) 
     { 
      if(data.results) // Checks to see if you have any new tweets 
      { 
       var i = -1, result, HTML='', HTML2=''; 
       while((result = data.results[++i]) && !TwitterCache[result.id]) 
       { 
         insert html.. blabla} 

Antwort

1

Stellen Sie eine globale Variable

var intID; 

zuordnen setInterval auf diese Variable

intID = setInterval("getSearch()",10000); 

eine ID für das div Set

$("#divid").hover(function(){ 
    clearInterval(intID); 
}, 
function(){ 
    // set the interval again 
}); 
2

setInterval gibt eine "Referenz" in diesem Intervall, das Sie einrichten, damit Sie es mit window.clearInterval() stoppen können, und das ist, was Sie tun müssen:

var myInterval; 

function startMyInterval() { 
    if (!myInterval) { 
    // It's better to call setInterval width a function reference, than a string, 
    // also always use "window", in case you are not in its scope. 
    myInterval = window.setInterval(getSearch, 10000); 
    } 
} 

function stopMyInterval() { 
    if (myInterval) { 
    window.clearInterval(myInterval); 
    } 
} 

startMyInterval(); // Start the interval 

jQuery("#myDiv").hover(stopMyInterval, startMyInterval); 
+0

Ich habe versucht zu Implementiere das in meinem Code, aber ohne Glück. Ich bearbeite meine Frage mit mehr Code, und ich würde mich sehr freuen, Ihnen einige zusätzliche Ratschläge zu geben, wo Sie diese Frage stellen können. – Noop

0

Ich denke, das sollte funktionieren:

$("#divID").hover(
    function() { 
    PauseTheInterValThing() 
    }, 
    function() 
    { 
    setInterval("getSearch()",10000); 
    getSearch(); 
    } 
); 
0

Die einfachste Art und Weise, und die kürzeste

Simplest Methode wäre:

<div id="yourDiv"> 
EXAMPLE TEXT 
</div> 

<script language="Javascript"> 

var interval = setInterval("getSearch()",1000); 

document.getElementById("yourDiv").addEventListener('mouseover', function() 
{ 
clearInterval(interval); 
},false); 

document.getElementById("yourDiv").addEventListener('mouseout', function() 
{ 
interval = setInterval("getSearch()",1000); 
},false); 
</script> 
0

Einsatz dieses in Ihrer dom-Ready-Funktion:

var inv = setInterval("getSearch",1000); 
$('#yourdiv').mouseover(function(){ 
    clearInterval(inv); 
}).mouseout(function(){ 
    inv = setInterval("getSearch",1000); 
}) 
Verwandte Themen