jQuery加载脚本一旦点击

Tom*_*Tom 3 jquery load click onclick

我只是在点击#element时尝试在jquery中加载2个脚本.目前,我正在尝试使用:

    jQuery("#element").click(function () {
       jQuery('#elementcontainer').load('/js/jquery.script.js');
       jQuery('#elementcontainer').load('/js/jquery.script2.js');
    });
Run Code Online (Sandbox Code Playgroud)

问题是每次单击#element时脚本都会加载.我只希望脚本加载一次 - 目前他们也是这样做的

"http://127.0.0.1/pck/Js/jquery.script.js?_=1279101767931"
Run Code Online (Sandbox Code Playgroud)

如何只加载一次脚本并停止非缓存.我正在使用ASP.NET MVC?

谢谢

Nic*_*ver 9

你可以one()像这样使用:

jQuery("#element").one('click', function () {
   jQuery('#elementcontainer').load('/js/jquery.script.js?' + (new Date().getTime()));
   jQuery('#elementcontainer').load('/js/jquery.script2.js?"' + (new Date().getTime()));
});
Run Code Online (Sandbox Code Playgroud)

.one()正好执行一次事件处理程序,该Date()部分用于缓存.我不确定你是否想要.load(),如果你的目的只是获取/执行脚本,那么$.getScript()更合适,如下所示:

jQuery("#element").one('click', function () {
   jQuery.getScript('/js/jquery.script.js');
   jQuery.getScript('/js/jquery.script2.js');
});
Run Code Online (Sandbox Code Playgroud)

$.ajax()dataType = "script"($.getScript()不是)的请求将不会被缓存.


如果要缓存,则有两个选项,可以使用$.ajaxSetup()一次(但这会影响所有后续$.ajax()速记调用):

$.ajaxSetup({ cache: false });
Run Code Online (Sandbox Code Playgroud)

或者制作完整的$.ajax()通话版本$.getScript():

jQuery("#element").one('click', function () {
   jQuery.ajax({ url: '/js/jquery.script.js', dataType: 'json', cache: true });
   jQuery.ajax({ url: '/js/jquery.script2.js', dataType: 'json', cache: true });
});
Run Code Online (Sandbox Code Playgroud)