Отражение не имеет места в производственном коде
Отражение разрывает статический анализ, включая инструменты рефакторинга и проверку статического типа. Отражение также нарушает обычные предположения разработчиков о коде. Например: добавление метода в класс (который не затеняет какой-либо другой метод в классе) никогда не должен иметь никакого эффекта, но когда используется отражение, другой фрагмент кода может «обнаружить» новый метод и принять решение назови это. Фактически определить, существует ли такой код, трудно.
Я думаю, что нормально использовать рефлексию и тесты, а также в генераторах кода.
Да, это означает, что я стараюсь избегать рамок, которые используют рефлексию. (очень плохо, что Java не имеет надлежащей поддержки метапрограммирования во время компиляции)
Это должно сработать, не могли бы вы пояснить, что вы имеете в виду под словом «до»? Вы делаете это?
jQuery("#id_of_anchor").click(function(event) {
event.preventDefault();
Function_that_does_ajax();
});
Потому что этот должен работать в том смысле, что если он не работает, ВЫ делаете что-то не так, и нам нужно увидеть больше кода. Однако для полноты картины вы также можете попробовать следующее:
jQuery("#id_of_anchor").click(function() {
Function_that_does_ajax();
return false;
});
РЕДАКТИРОВАТЬ
Две ссылки используют этот код:
$('#test').click(function(event) {
event.preventDefault();
$(this).html('and I didnt scroll to the top!');
});
$('#test2').click(function(event) {
$(this).html('and I didnt scroll to the top!');
return false;
});
И как вы можете видеть они работают нормально.
Этот вопрос больше относится к упражнению по отладке, так как в нем указано, что вы используете правильные функции из объекта события jQuery .
В обработчике событий jQuery вы может выполнять одну или обе из двух основных вещей:
1. Prevent the default behavior of the element (The A HREF="#", in your case):
jQuery("#id_of_anchor").click(function(evt) {
// ...
evt.preventDefault(); // assuming your handler has "evt" as the first parameter
return false;
}
2. Stop the event from propagating to event handlers on the surrounding HTML elements:
jQuery("#id_of_anchor").click(function(evt) {
// ...
evt.stopPropagation(); // assuming your handler has "evt" as the first parameter
}
Since you're not getting the expected behavior, you should take out the ajax call temporarily, replace it with some innocuous code like setting a form value, or -shudder- alert("OK") and test if you still scroll to the top.
$("#id_of_anchor").click(function(event) {
// ...
return false;
}
вы можете использовать javascript: void (0); в собственности href.
У меня была такая же проблема.
Я думаю, это происходит, когда вы привязываете событие перед добавлением элемента в DOM.