Обработка события нескольких кликов в jQuery, где важен порядок - PullRequest
3 голосов
/ 10 марта 2010

Я работаю над php тем приложением, которое использует ajax. На всех ссылках, где я хочу получить ссылку, захваченную jQuery, я добавляю класс ajaxlink прямо в ссылку

<a class="someclass ajaxlink" href="somelocation1">goto1</a>
<a class="someclass ajaxlink" href="somelocation2">goto2</a>
<a class="someclass ajaxlink" href="somelocation3">goto1</a>

JavaScript выглядит примерно так

$('.ajax-link').click(function(){get link with ajax});

Если у пользователя включен JavaScript, он получит страницу через ajax. У меня есть несколько страниц, поэтому у меня одна и та же функция для генерации одинаковой ссылки для всех страниц.

Теперь моя проблема в одной из ссылок на одной странице, я хочу сделать что-то другое. Он должен запустить другую функцию, когда страница ajax вернется успешно. Теперь у меня есть такой код.

<div class"specialclass">
    <a class="someclass ajaxlink" href="somelocation1">goto1</a>
    <a class="someclass ajaxlink" href="somelocation2">goto2</a>
    <a class="someclass ajaxlink" href="somelocation3">goto1</a>

    <a class="someclass ajaxlink special-1" href="somelocation">goto</a>
    <a class="someclass ajaxlink special-2" href="somelocation">goto</a>
    <a class="someclass ajaxlink special-3" href="somelocation">goto</a>
</div>

$('.ajax-link').click(function(){get link with ajax});
$('.specialclass .special-1,
   .specialclass .special-2,
   .specialclass .special-3').click(function(){get link with ajax});

Эта настройка, потому что я хочу, чтобы обычная ссылка в том же контейнере выполнялась как обычно. Только одна специальная ссылка, я хочу добавить еще одно событие клика. Я думаю, что я не могу добавить это событие к обычному событию щелчка, потому что оно должно срабатывать только на одной конкретной странице приложения. На всех остальных страницах будет ненужный код.

Однако при этой установке возникли ошибки, поскольку щелчок по специальному классу сначала выполняется, а затем - класс ajaxlink. Это должно быть переключено, оно должно срабатывать, только если ajaxlink вернул успех.

У любого есть идеи на этот счет.

Ответы [ 2 ]

3 голосов
/ 10 марта 2010

Вы можете изменить свою обычную функцию щелчка мышью из всего процесса и сделать это:

var normalClick=function(){/*get link with ajax*/};

$('.ajax-link').click(normalClick);
$('.specialClass').click(
  function(){
    normalClick();
    /* special click code */
  }
);
1 голос
/ 10 марта 2010

Вы пытались использовать полный обратный вызов при запросе ajax? Документы Jquery для ajaxComplete

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