У меня есть обратный вызов AJAX, который возвращает список результатов, записанных в виде ссылок в конкретном div
.Код выглядит примерно так:
$.each(data, function (idx, item) {
var a = document.createElement("a");
a.innerText = item.name;
a.href = "#";
// TODO set handler for click event
d.appendChild(a);
d.innerHTML += "<br/>";
});
Это отлично работает, и ссылки появляются.Тем не менее, я хочу выполнить некоторые действия, когда ссылки нажимаются.item
имеет некоторые другие свойства, которые мне понадобятся в обработчике кликов, поэтому я хотел бы закрыть их.Вот определение обработчика:
// defined in loop as a closure
var clickHandler = function() {
$('#siteId').value = item.siteId; // closed over this property
$('#siteName').value = item.name; // and this one
return false;
};
Я пробовал несколько способов предоставления этого обработчика для события click.Во-первых:
a.onclick = clickHandler;
Во-вторых:
a.addEventListener("click", clickHandler, true);
Я также пробовал mouseup
, mousedown
события, но они тоже не работают.
Я вижу, что браузер переходит на якорь #
(он добавляется к URL).
Что здесь происходит?Кроме того, есть ли решение jQuery, которое было бы более надежным в браузерах?