jquery创建自己的函数?

时间:2013-07-02 11:06:05

标签: jquery function

我有一个代码块,我想每10秒左右执行一次,也可以按一下按钮点击事件。我应该创建一个函数来节省编码重复吗?我将在页面上有很多按钮来触发这段代码,但我意识到我可以使用类选择器来触发代码。我需要定时器间隔,因为第三方将能够更改代码正在检查的值,我不关心定时器是否超级准确。

如何将代码更改为函数?我已经看到了一些创建函数的例子,但我没有看到任何符合我要求的例子。

//This Ajax checks the current on/off status of the passed X10 code
$('img.checkStatus').each(function(i, obj) {
    $x10Device = $(this).data("x10");
    var data="url=http://192.168.0.34:81/tenHsServer/tenHsServer.aspx?      t=ab&f=DeviceStatus&d="  +       $x10Device ;

    $.ajax({                  
        url:"urlencode.php",
        data: data,
        type: "POST",
        success: function(data) { 
            myd = $('<span />').html(data).find("#Result").text();
            var Nmyd = myd.charAt(3);
            if (Nmyd == '2'){
                $('img').attr('src','lightbulbon.png')
            }
            else{
                $('img').attr('src','lightbulboff.png')};    
            },
            error: function (request, status, error) {   
                alert(request.responseText);
            }
        });
    });
}); 

感谢您的任何想法和帮助

2 个答案:

答案 0 :(得分:1)

如果需要从多个位置调用代码块,将它封装在函数中然后根据需要调用函数绝对是个好主意。所以:

function someFuncName() {
    // your block of code here
}

根据功能赋予函数一个有意义的名称,在您的情况下checkStatus可能是合适的。

  

&#34;我想每10秒左右执行一次&#34;

好的,您可以使用setInterval() function

var intervalId = setInterval(someFuncName, 10000); // specify delay in milliseconds
// and later, if you need to cancel the interval:
clearInterval(intervalId);

请注意,当您将someFuncName传递给setInterval()时,在其名称后面包括括号 - 因为您没有调用该函数,所以将对它的引用传递给setInterval(),然后JS以指定的间隔为你调用该函数。

  

&#34;我会在页面上有很多按钮来激活这段代码,但我意识到我可以使用类选择器来触发代码&#34;

好的,所以将您的函数绑定为指定类的所有元素的单击处理程序:

$(".classOfButtonsHere").on("click", someFuncName);

答案 1 :(得分:0)

你可以尝试这样的事情

  <script type="text/javascript" >
   var timer  = setInterval("timerAjaxFunction()" , 10000) 
   function timerAjaxFunction ()
   {
      // your ajax code for 10 seconds comes here...     
   }

   $(document).ready(function(){
      $(".selctorClassofbutton").on("click",function(){ //button to call function
        clearInterval(timer);
        timerAjaxFunction ();
        timer  = setInterval("timerAjaxFunction()" , 10000);
      })
   });       
  </script>