Jquery Ajax $ .getScript()方法

时间:2009-11-19 06:14:13

标签: jquery

$。getScript of Jquery的ajax方法可用于从远程位置加载和执行javascript ... 它是否也可以用于加载javascript并在以后根据某些用户操作使用ajax加载的元素上发生某些事件时执行它?

谢谢和问候....

3 个答案:

答案 0 :(得分:8)

$.getScript将加载并执行Javascript。如果您只想加载Javascript,则必须将Javascript放在函数中,然后在将来发生事件时执行该函数。

假设您致电:

$.getScript('http://example.com/hello.js');

它包含以下内容:

function Hello() {
  alert('hello');
}

将执行Javascript,但由于警报在函数中,因此不会运行。在调用函数Hello()之前,它不会运行。因此,对于第二部分,假设您要连接它,以便在单击链接时运行Hello()函数。您可以提供回调以在加载Javascript后运行。所以你可以这样做:

$.getScript('http://example.com/hello.js', function() { Hello(); });

加载脚本后,会在链接上设置点击事件处理程序,调用Hello函数。

答案 1 :(得分:2)

目标是让脚本绑定到尚未加载的元素,还是降低对远程脚本的调用次数?

如果是第一个,您不需要保存脚本以供以后执行,您只需将$.getScript()放入另一个函数,并将您想要的事件绑定到该函数:

function executeScript() {
     $.getScript("somescript.js", 
          blah blah blah
          );
 }

$(".post_loaded_elements").hover(executeScript);

但是,如果脚本位于某个远程服务器上,并且您不希望每次用户将鼠标悬停在某个元素上时进行远程调用,则可能需要使用某种序列化方法,您可以在其中请求内容脚本使用另一个ajax方法,并反序列化并运行它。这将使用与上面相同的设置,只需要额外的步骤来检索脚本并将其序列化为在函数中反序列化的变量。我会快速检查一下jquery中的序列化是否相当简单。

答案 2 :(得分:0)

是的,这是可能的。我制作了以下脚本,它由三个文件组成,界面,当用户点击按钮2时从外部文件加载的html文本框,以及当用户单击第一个按钮并提醒时加载的外部脚本文本框的值,在脚本之前但在加载文档之后加载。

单击按钮2,在文本框中键入内容,然后单击按钮1,这是代码。

html页面(界面)

<button id="b1">button 1</button>
<button id="b2">button 2</button>

jquery的

$(document).ready(function(){
    $("#b1").click(function(){
        $.getScript('externalscript.js');
    });
    $("#b2").click(function(){
        $("#load").load('test.html');
    });


});

已加载元素

<input type="text" id="text" />

外部脚本

alert($("#text").val());