jQuery加载脚本一旦点击

时间:2010-07-14 12:21:15

标签: 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');
    });

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

"http://127.0.0.1/pck/Js/jquery.script.js?_=1279101767931"

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

THX

2 个答案:

答案 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的请求

$.ajaxSetup()


如果想要缓存,您有两种选择,可以使用$.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