2013-11-22 3 views
0

Одна вещь, которая меня озадачивает, заключается в том, что иногда, когда я пытаюсь назначить функцию jQuery через встроенный атрибут (onclick="bam();"), возможно, существует только 50-50 вероятность того, что это будет на самом деле сгореть.javascript onclick, onload, onmouseenter - основы

Я знаю, что функция хороша, потому что, если я назначаю обычный jQuery .on('click', function(){...}), он отлично работает. После прочтения и повторного чтения всего, что я могу найти в Интернете по этому поводу, я так же невежествен.

Я не вижу шаблонов, которые мне нужно видеть, и это заставляет меня понять, что мне нужно найти простой учебник об этом. Я не хочу изучать JavaScript, я просто хочу узнать об этой одной ключевой области.

+1

Нет такой вещи, как «назначение функции jquery inline». Когда вы делаете 'onclick =" doSomething() ", который не имеет ничего общего с jQuery (и отлично работает без jQuery). – Alxandr

+1

Пожалуйста, разместите код, демонстрирующий это поведение. – Andre

+0

Я предполагаю, что когда вы назначаете встроенный обработчик, скрипт обрабатывается перед элементом HTML, поэтому он не знает об этом элементе, а на * what * - вы получаете функцию undefined. – tymeJV

ответ

0

Возможно, в обработчике событий есть ошибка, которая мешает ему работать, вы можете думать, что он получает вызов только в 50% случаев, но на самом деле его называет 100% и дает неожиданные результаты в 50% случаев.

Чтобы узнать, есть ли ошибки, вы можете нажать F12 в Chrome или Firefox с помощью firebug и проверить консоль. Чтобы узнать, вызвана ли функция, первая строка в функции может быть: console.log("I am called");, что бы ни случилось после этого, вы должны хотя бы увидеть это сообщение в консоли.

Для лучшего дизайна вы никогда не должны объявлять, какое событие должно быть запущено в вашем html (встроенном), это должно быть сделано в скрипте, и здесь JQuery может облегчить вам жизнь, потому что методы будут работать и вести себя одинаково на всех браузеры.

Смежные вопросы