Чтобы прикрепить обработчик кликов с помощью стандартного JavaScript, вы можете попробовать что-то вроде этого:
var myelement = document.getElementById("clickme");
function myClickHandler (evt) {
var evt = evt || event; // ie uses a global instead of
// passing an object as a param
(evt.target || evt.srcElement).style.width="110px";
}
if (myelement.addEventListener) {
myelement.addEventListener("click", myClickHandler, false);
} else if(myelement.attachEvent) {
myelement.attachEvent("onclick", myClickHandler);
} else if(typeof myelement.onclick === "function") {
(function () {
var oldfunc = myelement.onclick;
myelement.onclick = function (evt) {
var evt = evt || event;
oldfunc(evt);
myClickHandler(evt);
}
})()
} else {
myelement.onclick = myClickHandler;
}
или попробуйте сделать что-то подобное, используя jquery
jQuery("#clickme").click(function(evt){ jQuery(evt.target).css("width",110); });
Вы можете утверждать, что первый пример кода - глупая вещь, которую писать каждый раз, когда вы хотите назначить обработчик кликов. Почему бы не преобразовать это в свою собственную стандартную функцию и не использовать ее повторно? тогда у вас есть центральная функция, которую вы можете отлаживать без необходимости переписывать каждый экземпляр, если вы нашли что-то не так.
Это был бы очень хороший аргумент, и в этом суть библиотеки вроде jquery. Вы экономите время, не писать этот подробный шаблон, который абсолютно необходим, если вы хотите, чтобы ваш код работал в разных браузерах. Вы экономите время, не отлаживая его. Вы экономите время, если вам нужно отладить его, вам просто нужно исправить одну функцию в jquery и отправить отчет об ошибке для следующей версии. Если что-то не так с кодом привязки события, то только один парень должен изменить один бит кода, а не тысячи людей, которым нужно изменить миллионы бит кода. И когда кто-то указывает на то, что вы должны проверить addEventListener первых, точка становится спорным, так как JQuery делает уже установленную «правильную» вещь. И если этого не произойдет, это будет в следующей версии.
jQuery не поможет вам в действительно сложных проблемах, специфичных для предметной области, но для проработки каждодневных манипуляций с домом лучше использовать библиотечную функцию, чем пытаться заставить ее «приблизиться к цели». Слишком много торчащих межбраузерных осколков и слишком много глупых многословных APIS, и это слишком глупо, чтобы решать проблемы, которые уже были решены, снова и снова.
Вам нужна НЕКОТОРАЯ разновидность библиотеки (не обязательно jquery), чтобы оставаться в здравом уме.
Теперь сколько времени и усилий вы экономите, точно? Кто знает? это неизмеримо Сколько раз вам приходится связывать обработчик событий? Сколько раз вам приходилось делать какие-либо другие вещи, которые jQuery предоставляет в простой функции? Одно сильно зависит от другого.
Если вы когда-нибудь найдете способ измерить производительность программиста, сообщите нам об этом. Я думаю, что мы все были бы очень заинтересованы. В любом случае, мы знаем из этих объективных фактов и нашего личного субъективного опыта, что это, вероятно, довольно значительное время.