2010-12-10 4 views
1

ce que je suis maintenant:Comment est-ce que je fais fonctionner une fonction seulement quand la souris ne survole pas un div spécifié?

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

     } 
); 

Mais je veux cet intervalle pour faire une pause si le curseur de la souris est placé à l'intérieur d'un div sur mon site. Comment puis-je attaquer ce problème? Certes, je dois donner un ID à la div .. Mais une contribution sur la façon de faire la partie javascript/jquery est très appréciée.

EDIT: Plus de mon code .. Je ne suis pas tout à fait sûr où insérer le code dans les réponses à l'intérieur ceci:

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

 } 
); 

TwitterCache = {}; 
fonction

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} 

Répondre

1

une variable globale

var intID; 

Assigner setInterval à cette variable

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

Définir un identifiant pour la div

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

setInterval renvoie une "référence" à cet intervalle que vous configurez, vous permettant de l'arrêter avec window.clearInterval(), et c'est ce que vous avez à faire:

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

J'ai essayé de implémenter ceci dans mon code, mais sans aucune chance. Je vais éditer ma question avec plus de code, et je serais vraiment heureux de recevoir des conseils supplémentaires sur la façon de le mettre. – Noop

0

Je pense que cela devrait fonctionner:

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

La façon la plus simple et la plus courte

méthode Simplest serait:

<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

insérer dans votre fonction dom prêt:

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