使用jquery click事件触发.js文件

时间:2012-11-12 03:35:27

标签: javascript jquery

我正在尝试在jquery点击事件后加载在线托管的.js文件。首先,我这样做了吗?只有在点击链接后才会应用所有的javascript吗?

$(document).ready(function() {
            var clickHandler ="file.js";
    $('a').click(function() {
        $.getScript(clickHandler, function(data, textStatus, jqxhr) {
        console.log(data);
        console.log(textStatus);
        console.log(jqxhr.status);
    });
});

编辑:我刚刚检查了控制台,它正在加载文件但给我一条403 Forbidden消息。为什么会这样?我需要在标题中加入一些文字来引用吗?

2 个答案:

答案 0 :(得分:2)

编辑1:

误读了jQuery代码 - 这部分答案不适用:

<击> 有一些方法可以将Javascript文件添加到现有文档中,但它并不像您尝试的那样简单。

这个讨论可以解释:How to dynamically insert a <script> tag via jQuery after page load?

另一种解决方案是将Javascript的内容放入其自己的函数中,在页面上正常包含该函数,然后在click处理程序中运行该函数。

修改:扩展回答

假设您的file.js代码中有一些相当简单的代码:

var el = document.getElementById("fooz");
if (el) {
  el.className += " example";
}

由于代码未包含在函数中,因此只要加载它就会运行(或尝试运行)代码。它只会在每次加载时运行一次。

但是,如果你把它包装在一个函数中,就像这样:

function colorFooz() {
  var el = document.getElementById("fooz");
  if (el) {
    el.className += " example";
  }
}

然后代码将运行,直到调用该函数。它将加载并准备好稍后调用。

错误403

首先要弄清楚为什么要获得error 403

在此阶段,这与JavascriptjQueryAJAX无关。通过尝试直接在浏览器中加载Javascript文件,通过输入类似这样的内容来解决问题:

http://example.com/file.js

更改网站的网址和路径。此时,您仍然应该收到403错误,但现在可以检查服务器日志以查看在那里写入的错误。

我找到了一个页面,提供了在此处跟踪403错误的指南:http://www.checkupdown.com/status/E403.html

((PS:如果我不得不随机猜出你收到403错误的原因,我会说你没有正确的路径文件file.js。这取决于你的结构和各种包括,它可能是错误地计算相对路径。))

答案 1 :(得分:0)

传递给 click()的函数是一个回调函数,仅在单击该元素时执行。所以,是的,你已经有了这一部分。