2015-03-14 4 views
2

я получил пустую ссылку:Force нажмите на пустую ссылку, чтобы не переместить фокус страницы

<a href="#" id="stop-point-btn">+ add stop-point</a> 

, связанный с функцией JS:

$("#stop-point-btn").bind("click", addStopPoint); 

, который просто добавляет некоторое содержимое в DIV :

function addStopPoint() { 
    $("#stop-point-content").append(stopPointHtml()) 
} 

После щелчка, если я прокручивается немного вниз, он перемещает меня обратно в верхней части страницы (конечно, из-за предоставленному # покупать право y id). Но как я могу сделать так, чтобы положение, где я нахожусь на странице, не изменяется (что означает положение прокрутки).

ответ

4

Использование preventDefault().

$("#stop-point-btn").bind("click", function(e) { 
     e.preventDefault(); 
     addStopPoint(); 
    }); 

И иметь в виду:

По JQuery 1.7, метод .on() является предпочтительным способом для прикрепления обработчиков событий к документу. Для более ранних версий метод .bind() используется для привязки обработчика событий непосредственно к элементам .

+0

Итак, вы предлагаете также, что я лучше использовать '.()' Вместо '.bind()', потому что в этом случае анкер представляет собой документ, но не элемент? – Milkncookiez

+0

Не совсем. Я имел в виду это: http://stackoverflow.com/questions/11847021/jquery-bind-vs-on. Угадайте, что слишком много, что могло бы сбить с толку. – lesssugar

1

Передайте событие как аргумент вашей функции и добавьте это утверждение. event.preventDefault() внутри функции addstoppoint.

4

заменить значение href в javascript: void (0); и нажмите на ссылку не будет производить никаких эффектов

<a href="javascript:void(0);" id="stop-point-btn">+ add stop-point</a> 
1

Вам необходимо пройти href значение javascript:void(0); возвращающие undefined, поэтому браузер останется на той же странице и не прокручивать страницу.

<a href="javascript:void(0);" id="stop-point-btn">+ add stop-point</a> 
Смежные вопросы