如何在jquery

时间:2017-05-22 17:14:45

标签: javascript jquery

我有以下功能:

$(function(){
    performance();
    function performance(){
       pHandler = setTimeout(performance,3000)
        perOb = [];
        alert('hhhh')
        $(".performance").each(function(i){            
            perOb[i] = $(this);
            url = '/cavity/performance/'+perOb[i].attr('data-id')+'/'+jobId;
            //perOb[i].html('%');
            $.ajax({
                type: "GET",
                //dataType: "json",
                url: url,
                success: function(data){
                    perOb[i].html(data.performance+"%");
                },
                error: function(xhr, status, response){
                    console.log(xhr.responseText);

                },

            });
        });
    }

});

我正试图通过以下其他事件来调用它:

$('#in-between').change(function(){
        if ($(this).prop('checked')){
            window.clearTimeout(pHandler);
            alert('yesr')            
        }
        else{
            alert('noo')
            performance();
        }

    })

我收到错误performance is not a function。我尝试过$.performance()jQuery.performance(),并尝试将其分配给变量,如:

perf = $(function(){
    performance();
    function performance(){
       pHandler = setTimeout(performance,3000)
     .......

并将其称为perf.performance(),但所有尝试的人都没有成功从事件中调用它。

  

这个问题不同于   JavaScript error: "is not a function"   对于以下内容:

     

这是Jquery的意思,所以有人可能会错误地认为这一点   多个document.ready(function())作为Jquery的一个范围

1 个答案:

答案 0 :(得分:5)

您已经在其父函数范围内定义了该函数,该函数是在页面加载时执行的匿名函数:

$(function () { // the anonymous function
    function performance() {
        // your function
    }
});

如果您希望它存在于该范围之外,则必须在该范围之外定义它。例如:

// define the function
function performance() {
    // your function
}

// execute it when the document loads
$(performance);

这将在更高的范围内定义您的功能。这可能在全球范围内。如果不需要,那么你将在一个更大的函数中包装需要performance的整个上下文并自我调用那个。