执行外部jQuery代码而不调用显式函数

时间:2011-05-12 16:08:58

标签: jquery jquery-selectors

我在外部文件中编写了一些jQuery代码,目标是匹配包含脚本的页面中的每个<select>标记。

我的目标是将脚本引用包含在目标页面的<head>标记中,并“运行”jQuery代码,而无需调用任何函数。

我已经看到了几个带有外部jQuery代码的例子,但都调用了一个执行(外部)代码的函数。

如果我使用“普通”javascript,就像简单的警报一样,它们会毫无问题地执行。当我尝试使用我的jQuery代码时,没有任何反应。

这是我的外部jQuery文件:

$(function() {     
    $("select").focus(function() {
        alert('selected...');
    }).change(function() {
        alert('changed...');  
    })   
});

即使我在开始时没有使用$(function(),我也会在第一次出现$时获得异常“对象预期”,同时甚至将$(function()留在括号内它起作用的简单警报。

应该如何开发外部文件?

我在测试页面中内联测试了外部脚本,它运行正常。

3 个答案:

答案 0 :(得分:0)

代码的编写方式没有区别,无论是在HTML页面中内嵌,还是通过<script src='...'>包含。

然后问题是,在执行代码时尚未包含jQuery。看看你包含文件的顺序,并确保jQuery出现在依赖它的代码之前。

答案 1 :(得分:0)

您可能在加载jQuery之前执行jQuery代码。在这种情况下,对docready($(function(){})的调用将失败,因为$!== jQuery。通常要做到这样的事情,我会把一些代码放在我文件的底部,类似于:

$(function(){
  var t = "external_file.js",
      s = document.createElement("script"),
      h = document.getElementsByTagName("head");

  s.src = t;
  s.type = "text/javascript"
  h.appendChild( s );
})

答案 2 :(得分:-1)

试试这个:

$(document).ready(function() {     
    $("select").focus(function() {
        alert('selected...');
    }).change(function() {
        alert('changed...');  
    })   
});