Запретить щелчок по умолчанию на вкладках JQuery в Google Chrome - PullRequest
1 голос
/ 06 июня 2010

Я бы хотел предотвратить поведение по умолчанию для клика по ссылке.Я попытался вернуть ложь;также javascript: void (0);в атрибуте href, но, похоже, он не работает.Он отлично работает в Firefox, но не в Chrome и IE.

У меня есть одна вкладка, которая загружает через AJAX содержимое, представляющее собой простую ссылку.

<script type="text/javascript">
        $(function() {
            $("#tabs").tabs({
                ajaxOptions: {
                    error: function(xhr, status, index, anchor) {
                        $(anchor.hash).html("Couldn't load this tab. We'll try to fix this as soon as possible. If this wouldn't be a demo.");
                    },
                    success: function() {
                        alert('hello');
                        $('#lk').click(function(event) {
                            alert('Click Me');
                            event.preventDefault();
                            return false;
                        });
                    }
                },
            load: function(event, ui) {
                    $('a', ui.panel).click(function(event) {
                        $(ui.panel).load(this.href);
                        event.preventDefault();
                        return false;
                    });
                }           
            });
        });
</script>
<body>
      <div id="tabs">
        <ul>
            <li><a href="linkChild.htm">Link</a></li> 
        </ul>
      </div>
</body>

Содержимое linkChild.htm - это

<a href="http://www.google.com" id="lk">Click Me</a>

Таким образом, когда содержимое вкладки загружается успешно, к ссылке «lk» добавляется событие щелчка.Когда я нажимаю на ссылку, отображается предупреждение, но затем ссылка исчезает.Я проверяю HTML, и элемент фактически удаляется из DOM.

1 Ответ

0 голосов
/ 06 июня 2010
$('#selector').click(function(event) { 

    event.preventDefault();

});

Объект события по умолчанию передается вашему обработчику кликов - вам нужно что-то получить для его получения. Получив событие, вы можете использовать метод jQuery .preventDefault(), чтобы отменить поведение ссылки.

Edit:

Вот исправленный фрагмент вашего кода:

$('a', ui.panel).click(function(event) {
   $(ui.panel).load(this.href);
   event.preventDefault(); 
   return false;
});

Обратите внимание на добавление слова 'event' при создании функции anon (или вы можете использовать только e или что-нибудь еще - имя неважно, факт, что есть переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...