Тогда гиперссылка должна открывать диалог:
<a href="javascript:$('#foo').dialog('open');">Show dialogue box</a>
Но при этом открывается диалоговое окно, а затем часть перенаправляется на страницу с URL-адресом javascript: $ ('# foo'). Dialog ('open');!
Этого не должно быть. Псевдопротокол javascript:
не связан с загрузкой страницы, и уж точно не через HTTP. Я не рекомендую его (вместо этого я бы использовал обработчик jQuery click
), но он должен работать.
Я попытался вернуть false:
...
Но тогда ссылка вообще не отвечает, когда я нажимаю на нее.
То, что также не должно происходить.
Ваш код в кавычках в порядке (работает здесь, например: http://jsbin.com/inixa5),, поэтому проблема должна лежать в какой-то другой части страницы.
Обновление : Хорошо, это странно, IE6 и IE7 это не понравилось; Я думаю, это потому, что dialog
возвращает значение. Вы можете обойти это, либо свернув свой вызов, чтобы открыть диалог в функции, и ничего не возвращая явно:
<a href="javascript:showDialog('#foo');">Click Me</a>
<script>
$("#foo").dialog({autoOpen: false});
function showDialog(selector) {
$(selector).dialog('open');
}
</script>
Или (и это мега-хаки), убедившись, что последнее выражение в блоке javascript:
равно undefined
:
<a href="javascript:$('#foo').dialog('open');undefined;">Click Me</a>
<script>
$("#foo").dialog({autoOpen: false});
</script>
Или используя onclick
:
<a href="#" onclick="$('#foo').dialog('open'); return false;">Click Me</a>
<script>
$("#foo").dialog({autoOpen: false});
</script>
Но в любом случае, настоятельно рекомендуем подключить обработчик событий в стиле DOM2:
<a href="#" name='openSesame'>Click Me</a>
<script>
// This _can_ be immediately after the anchor, but I'd put it in
// a separate, since .js file for the page that you load just before
// the closing body tag.
$("#foo").dialog({autoOpen: false});
$("a[name=openSesame]").click(function() {
$("#foo").dialog('open');
return false;
});
</script>
Живой пример (Очевидно, вы можете использовать любой селектор, который имеет смысл, вам не нужно давать якору name
[или id
].)
Одна из приятных вещей в этом - то, что вы можете сделать так, чтобы якорь взял пользователя куда-то значимым и / или полезным, если JavaScript отключен (что называется прогрессивное улучшение ).