2012-03-17 87 views
0

这里是代码

$(function() { 
    $("input[type=button]").click(   
      function(evt) {       
       if(!window.sayHi) { 
        evt.target.disabled = "disabled"; 
        $.getScript("hi.js", function() { 
         sayHi($("input[type=text").val()); 
         evt.target.disabled = ""; 
        }); 
       } 
       else{ 
        sayHi($("input[type=text").val()); 
       } 
      }); 
}); 

如果我按钮反复点击,然后$ .getScript(会发生什么)将重复下载hi.js文件或仅第一次?

$ .getScript()检查客户端机器中是否存在js文件....如果不是那么它只下载?请讨论。谢谢

我得到了关于getScript()函数的详细信息。在这里我给代码,我卡住了几行。

jQuery.cachedScript = function(url, options) { 

// allow user to set any option except for dataType, cache, and url 
options = $.extend(options || {}, { 
dataType: "script", 
cache: true, 
url: url 
}); 

// Use $.ajax() since it is more flexible than $.getScript 
// Return the jqXHR object so we can chain callbacks 
return jQuery.ajax(options); 
}; 

// Usage 
$.cachedScript("ajax/test.js").done(function(script, textStatus) { 
console.log(textStatus); 
}); 

1)cachedScript()函数需要两个参数,但只有一个在调用时发送....为什么?

2)从哪里完成()函数来到这里?

请解释一下上面两点

+1

全部解释了她的http://api.jquery.com/jQuery.getScript/ – 2012-03-17 18:35:17

+0

不要懒惰......阅读函数的文档。 – gdoron 2012-03-17 18:42:51

回答

0

jQuery的追加当前Unix纪元为GET PARAM所以它会为每个click事件可以下载(只要它们不相同毫秒发生):P。

默认情况下,$.getScript()将缓存设置设置为false。此 将时间戳查询参数附加到请求URL,以确保 浏览器在每次请求时都下载脚本。您可以使用 $.ajaxSetup()全局设置缓存属性来覆盖此功能。

Source

设置标志并对其进行测试或查找新脚本中定义的变量将是一种很好的形式。然后根据这个写一个条件。

+0

我用更多的疑惑更新我的问题。如果可能的话,请看看和回复。谢谢 – Thomas 2012-03-19 15:58:48