2010-03-10 2 views
3

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

<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}); 

Если пользователь он включен Java-Script получит страницу через 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 вернул успех.

У любого есть идеи по этому вопросу.

ответ

3

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

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

$('.ajax-link').click(normalClick); 
$('.specialClass').click(
    function(){ 
    normalClick(); 
    /* special click code */ 
    } 
); 
+0

спасибо я думаю, что это решение будет работать отлично. Таким образом, я смогу сделать намного больше после завершения ajax, я попробую. –

+0

У меня есть вопрос по этому вопросу. С помощью этого метода, если ссылка имеет как класс ajax-link, так и spcialclass, событие normalclick будет запускаться дважды? –

+1

Я добавил event.stopImmediatePropagation(); к specialClass, и теперь он отлично работает, спасибо! –

1

Вы пытались использовать полный обратный вызов по запросу ajax? Jquery Docs for ajaxComplete

+0

Спасибо я буду читать корыта –

Смежные вопросы