Выполнить внешний код jQuery без вызова явной функции - PullRequest
0 голосов
/ 12 мая 2011

Я написал некоторый код jQuery во внешнем файле, чтобы соответствовать каждому тегу <select> на странице, где включен скрипт.

Моя цель - включить ссылку на скрипт в тег <head> целевых страниц и «запустить» код jQuery без необходимости вызова какой-либо функции.

Я видел несколько примеров с внешним кодом jQuery, но все они вызывают функцию для выполнения (внешнего) кода.

Если я использую «простой» JavaScript, как простые оповещения, они выполняются без проблем. Когда я пытаюсь использовать код jQuery, ничего не происходит.

Вот мой внешний файл jQuery:

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

Даже если я не использую $(function() в начале, я всегда получаю исключение «Ожидаемый объект» при первом появлении $, хотя даже оставляя $(function() и внутри скобок простое предупреждение, оно работает.

Как внешний файл должен быть разработан?

Я тестировал внешний скрипт на тестовой странице, и он отлично работает.

Ответы [ 3 ]

0 голосов
/ 12 мая 2011

Не имеет значения , где ваш код написан, либо встроен в вашу HTML-страницу, либо включен через <script src='...'>.

Тогда проблема заключается в том, что jQuery еще не былвключается ко времени выполнения вашего кода.Посмотрите, в каком порядке вы включаете ваши файлы, и убедитесь, что jQuery стоит перед этим кодом, который опирается на него.

0 голосов
/ 12 мая 2011

Возможно, вы выполняете код 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 );
})
0 голосов
/ 12 мая 2011

Попробуйте это:

$(document).ready(function() {     
    $("select").focus(function() {
        alert('selected...');
    }).change(function() {
        alert('changed...');  
    })   
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...