Как отменить событие изменения для элементов управления аккордеоном

$("#accordion").accordion({
    change: function (event, ui) {
        alert('event have to be changed')
    },
    changestart: function (event, ui) {
       return false;
    }
});

Можно ли отменить событие изменения?


person Simbian    schedule 01.12.2010    source источник
comment
это событие отмены, но действие все еще работает   -  person Simbian    schedule 01.12.2010


Ответы (6)


Я не уверен в изменении, но для других событий в jqueryui возвращение false отменяет событие.

person Martin Wawrusch    schedule 28.06.2011
comment
Это работает, потому что return false эквивалентно вызову e.preventDefault(); и e.stopPropagation(); - person earl3s; 21.10.2016

stopPropagation () - это ключ к остановке обработки действия jQueryUI, но он должен быть прерван ПЕРЕД событием changestart. Например, когда действительно щелкают по элементу заголовка.

Если это пара заголовок / содержимое в вашем аккордеоне:

<h3 class='noexpand'>This is a dummy header</h3>
<div>This is dummy content</div>

Тогда это предотвратит расширение div аккордеоном при щелчке по заголовку:

$("h3.noexpand").click(function(e) {
    e.stopPropagation();
});

См. аккордеон jquery для предотвращения всплывания / разрешения действия ссылки по умолчанию.

person Dave    schedule 16.03.2012

Как сказал Мартин, вы можете вернуть false. См. Пример кода ниже.

...
eventname: function( event, ui ) {
    // Add your code here
    ...

    return false;
}
person Dean Oakley    schedule 08.04.2014

Возврат false ничего не делает, чтобы отменить событие в jQueryUI, вам нужно вызвать preventDefault () для этого события.

$("#accordion").accordion({
    changestart: function (event, ui) {
       event.preventDefault();
    }
});

Это должно работать со всеми методами событий, включая автозаполнение. Удобно, если вы хотите включить несколько настраиваемых параметров в меню автозаполнения, которые вы хотите, чтобы кто-то выбрал, но на самом деле не хотите добавлять к вводу, к которому он привязан. :)

person Robee Shepherd    schedule 04.09.2014
comment
Эти обработчики, таким образом, могут предотвратить запуск делегированного обработчика путем вызова event.stopPropagation () или возврата false. - api.jquery.com/event.stoppropagation - person bitoiu; 04.09.2014
comment
На самом деле это не работает. Это была и моя первая мысль. - person earl3s; 21.10.2016

Что сработало для меня, так это звонки:

function onChange(e, ui) {
    e.preventDefault();
    e.stopPropagation();
}

Возврат false в конце функции имеет тот же эффект, потому что это эквивалент выполнения этих двух вызовов функций.

person earl3s    schedule 21.10.2016

person    schedule
comment
stopPropagation(), а не stopPropogate () - person earl3s; 21.10.2016