2009-02-19 5 views
0

Я внедряю всплывающее всплывающее меню справки на веб-сайте asp.net, и я использую JQuery для реализации свистящих битов.JavaScript: Отмена событий кросс-браузера

Всплывающее окно становится видимым, нажимая на ссылку, ссылка также содержит ссылку href на другую страницу для поддержки пользователей с отключенным JavaScript. Я добавил «return false»; до конца строки Javascript в событии onClick ссылки, чтобы предотвратить навигацию по значению href, и был очень доволен, пока не понял, что это не поддерживается в Firefox.

Я столкнулся с несколькими статьями, указывающими на метод event.preventDefault, который может использоваться для того, чтобы заставить Firefox вести себя одинаково, но во всех случаях пример, который, как представляется, имеет некоторый обременительный шаблон явного добавления событий в соответствующий объект.

Есть ли простой способ заставить этот синтаксис работать? Я хочу держать свой контроль как можно более простым. Пример кода:

<a id="myLink" 
onclick="javascript:$('#myPanel').addClass('helpPopOn');return 
false;" href="/pages/help.aspx?content=TestHelp">Help</a> 

ответ

5

Явное добавление событий является обременительным?

$("#myLink").click(function(e) 
{ 
    $('#myPanel').addClass('helpPopOn'); 
    e.preventDefault(); 
}); 
+0

Спасибо - как бы я интегрировать это в свой контроль, хотя? Может быть несколько таких же элементов управления, поэтому я должен иметь возможность передавать идентификатор управления и т. Д.? –

+0

Какие элементы DOM представляют собой ваш «контроль»? Я вижу, что в настоящее время вы используете два идентификатора, поэтому для каждого элемента управления они должны быть разными; если их можно легко связать в DOM без явных идентификаторов, вы могли бы использовать имена классов и т. д. Проверьте дизайн других элементов управления jQuery. – Shog9

1

Хотя ответ Shog9 является правильным, для полноты та же логика, очевидно, относится и к встраивать обработчик:

<a id="myLink" onclick="javascript:$('#myPanel').addClass('helpPopOn');event.preventDefault();return false;" href="/pages/help.aspx?content=TestHelp">Help</a> 
Смежные вопросы