Чтобы прикрепить обработчик щелчка с помощью стандартного 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 не поможет вам в решении действительно сложных проблем, связанных с конкретным доменом, но для обработки ежедневных манипуляций с домино лучше использовать библиотечную функцию, чем пытаться закрыть ее «близко к металлу».Слишком много перекрестных осколков брандмауэра, и слишком много глупых дословных dom APIS, и слишком глупо решать проблемы, которые уже были решены, снова и снова.
Вам нужен НЕКОТОРЫЙ вид библиотеки (не обязательно jquery), чтобы оставаться в здравом уме.
Теперь сколько времени и усилий вы экономите, точно? Кто знает? это неизмеримо. Сколько раз вам нужно привязывать обработчик событий? Сколько раз вам приходится делать какие-либо другие вещи, которые предоставляет jQuery в простой функции? Один сильно зависит от другого.
Если вы когда-либо находите способ измерения производительности программистов, сообщите нам об этом. Я думаю, мы все были бы очень заинтересованы. В любом случае мы знаем из этих объективных фактов и наших собственных личных субъективных переживаний, что это, вероятно, довольно значительный промежуток времени.
Для меня это не только строка, сохраненная. Вы сэкономите много сложностей, проблемы с браузером X, причуды, получите отличные libraires через плагины. Это делает программирование в JS очень забавным и полезным, когда вам нужно его поддерживать. –