событие .click, похоже, не срабатывает

#jquery #jquery-click-event

#jquery #jquery-click-event

Вопрос:

У меня есть следующий код внутри <script> тега:

 $(document).ready(function(){
  $("#toolbarReset").click(function() {
    alert("I've been clicked! Oh, what a world!");
  });

  ... other, unrelated functions, which all seem to work fine    

});
  

… и немного html ниже:

 <span id="toolbarReset" style="line-height: 18px; width: 50px; height: 21px; padding: 0pt 7px 0pt 3px;">
  Reset
</span>
  

… но когда я нажимаю на слова «Сброс», ничего не происходит.

Попытался изменить его с использования «id» на «class» и соответствующим образом обновить код jQuery ( «#toolbarReset» стал «toobarReset» ). Попытался поместить некоторый код внутри события .click для вывода в консоль Firebug и проверил, что «toolbarReset» — это уникальный идентификатор в DOM.

Комментарии:

1. Если вы удалите весь ваш другой скрипт, это сработает? Ваш span динамически добавляется в DOM? Я не вижу ничего плохого в том, что вы опубликовали.

2. вы проверили, что функция ready действительно запущена?

3. возможно, попробуйте также проверить ваш html, чтобы увидеть, есть ли какие-либо ошибки

4. При использовании firebug регистрируются ли какие-либо ошибки javascript (не те, которые вы пытались записать в консоль из вашего события click). Похоже, что ваше событие click вообще не срабатывает, поэтому любой код там не будет работать. Создается ли ваш диапазон динамически? Пробовали ли вы приведенные ниже примеры JSFiddle и работают ли они у вас?

Ответ №1:

Кажется, у меня работает, какой браузер вы используете?

http://jsfiddle.net/YLCff/

Комментарии:

1. Я бы посоветовал проверить вашу страницу через W3C, чтобы увидеть, есть ли случайные теги, вызывающие проблемы.

Ответ №2:

возможно, у вас более одного набора #toolbarReset, в этом случае он не будет работать, пока вы не удалите другие идентификаторы.

Комментарии:

1. Думал об этом. Создал «View source» для моей текущей страницы и подтвердил, что отображаются только два места «toolbarReset» (1) в коде jQuery и (2) в теге span

2. проверьте, встроили ли вы предупреждения всех необходимых файлов jquery, это странно, потому что код работает для меня! попробуйте jAlert (сообщение, [заголовок, обратный вызов])

3. #toolbarReset представляет идентификатор html-элемента. Спецификация HTML диктует, что идентификаторы уникальны. Смотрите w3.org/TR/html401/struct/global.html#h-7.5.2

Ответ №3:

Оказалось, что это проблема со временем. Мой код jQuery выполнялся до того, как элемент был загружен на страницу, из-за того, где я разместил их по отношению друг к другу — следовательно, jQuery пытался привязаться к идентификатору, который еще не существовал.

Ответ №4:

Я проверил код в своем браузере, он сработал. В любом случае попробуйте использовать .on вместо .click.

то есть

  $("#toolbarReset").on('click',function() {
// watever code
}
  

Комментарии:

1. Метод .click и метод .on с параметром для события ‘click’ абсолютно идентичны. Пожалуйста, избегайте ответов на очень старые вопросы, на которые уже есть подтвержденный ответ, если у вас нет какой-либо новой или полезной информации.