如何只在鼠标悬停在指定的div上时才能运行函数?

时间:2010-12-10 11:27:25

标签: javascript jquery html

我现在得到的是:

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

      }
  );

但是如果将鼠标光标放在我网站上的div中,我希望这个间隔暂停。我该如何解决这个问题?当然我需要给div一个ID ..但是关于如何制作javascript / jquery部分的一些输入非常感谢。

编辑:我的代码更多..我不太确定在这里的答案中插入代码的位置:

$(           功能()           {               的setInterval( “getSearch()”,10000);           getSearch();

      }
  );

TwitterCache = {};

function 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}

5 个答案:

答案 0 :(得分:2)

setInterval会向您设置的时间间隔返回一个“引用”,允许您使用window.clearInterval()停止它,这就是您必须执行的操作:

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);

答案 1 :(得分:1)

设置全局变量

var intID;

将setInterval指定给此变量

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

设置div的ID

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

答案 2 :(得分:0)

我认为这应该有效:

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

答案 3 :(得分:0)

最简单的方法,也是最短的

最简单的方法是:

<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>

答案 4 :(得分:0)

将此插入您的dom-ready功能:

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