我有以下功能:
$(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的一个范围
答案 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
的整个上下文并自我调用那个。