jQuery click (false) в сочетании с функцией - PullRequest
2 голосов
/ 13 марта 2011

Я хочу запретить использование "#", потому что я использую jQuery, чтобы сделать что-то еще с плагином на клике ...

<a href="#" id="mylink">My Link</a>

<script>
    $('#mylink').somePlugin().click(false);
</script>

Вышеописанное работает хорошо, когда мне нужно заблокировать щелчок по умолчанию.

Теперь у меня есть что-то вроде этого ниже, и я хочу, чтобы поведение по умолчанию не срабатывало

<a href="#" id="mylink">My Link</a>

$('#mylink').click( function () {
    //  my code in here
});

Я просто не уверен, где и как включить click (false) в приведенный выше код. Несколько вещей, которые я попробовал, не сработали.

Я знаю ... Я чувствую себя новичком, спрашивающим об этом.

Спасибо вам! * * 1013

Ответы [ 3 ]

5 голосов
/ 13 марта 2011

Вам нужно сделать:

$('#mylink').click( function (e) {
        e.preventDefault();

        // the code here
    });
2 голосов
/ 13 марта 2011

Различные браузеры обрабатывают это немного по-разному, но jQuery делает все возможное, чтобы охватить ваши базы. Есть три вещи, о которых вы должны знать, и, по крайней мере, первые две из них должны быть сделаны, чтобы предотвратить нормальное поведение кликов в максимально возможном количестве браузеров:

  1. return false; в конце вашего обработчика кликов (как предложил Am ) остановит обычное действие клика по ссылке во многих браузерах, включая Internet Explorer и Google Chrome. return false; также остановит распространение события, которое может быть или не быть тем, что вы хотите. Это обычное поведение браузера и не имеет ничего общего с jQuery.

  2. e.preventDefault();, как предложил Лиам , является jQuery-методом , который предотвращает запуск действия по умолчанию. «Например, якоря, по которым щелкнули, не переведут браузер на новый URL.» Это влияет только на текущий элемент .

  3. e.stopPropagation(); - это еще один метод jQuery , который предотвращает всплытие события. Например, если у вас есть якорь в div, а у div есть событие click, связанное с ним, событие щелчка div будет срабатывать, даже если вы остановите якоря - если вы не вызовете этот метод.

Номер 2 будет охватывать почти все браузеры, и комбинацией 1 и 2 вы охватите более или менее все из них. Номер 3 необходим только в том случае, если вы не хотите, чтобы событие всплыло в дереве DOM, но я привыкла иметь его там, поскольку в большинстве случаев, если я хочу предотвратить действие по умолчанию для элемента, по которому щелкают, я не хотите что-нибудь кроме кода в этого конкретного обработчика .

2 голосов
/ 13 марта 2011
$('#mylink').click( function (e) {
    return false;
});
...