我只是在点击#element时尝试在jquery中加载2个脚本。目前,我正在尝试使用:
jQuery("#element").click(function () {
jQuery('#elementcontainer').load('/js/jquery.script.js');
jQuery('#elementcontainer').load('/js/jquery.script2.js');
});
问题是每次单击#element时都会加载脚本。我只希望脚本加载一次 - 目前他们也是这样做的
"http://127.0.0.1/pck/Js/jquery.script.js?_=1279101767931"
如何只加载一次脚本并停止非缓存。我正在使用ASP.NET MVC?
THX
答案 0 :(得分: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()));
});
.one()
只执行一次事件处理程序,Date()
部分用于缓存。我不确定你想要.load()
,如果你的意图只是获取/执行脚本,那么$.getScript()
更合适,如下所示:
jQuery("#element").one('click', function () {
jQuery.getScript('/js/jquery.script.js');
jQuery.getScript('/js/jquery.script2.js');
});
dataType = "script"
$.ajaxSetup({ cache: false });
$.ajax()
$.getScript()
won't be cached的请求
如果想要缓存,您有两种选择,可以使用$.ajax()
一次(但这会影响所有后续shorthand或{ {3}}来电):
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 });
});
或制作$.ajax()
简称的完整$.getScript()
通话版本:
{{1}}
答案 1 :(得分:0)
这样可以解决问题:
jQuery("#element").click(function () {
jQuery('#elementcontainer').load('/js/jquery.script.js');
jQuery('#elementcontainer').load('/js/jquery.script2.js');
jQuery(this).unbind('click');
});
请注意unbind()
上调用的$(this)
方法(元素#element
)。您可以查看更多unbind()
功能here。