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

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

+2

`event.preventDefault()`? – alex 2010-12-01 11:19:56

+0

это событие отмены, но действие все еще работает – Simbian 2010-12-01 12:01:01

ответ

1
event.preventDefault(); 
event.stopPropagate(); 
+0

Нет, это событие отмены, но действие все еще работает – Simbian 2010-12-01 13:33:21

+1

`stopPropagation()`, а не "stopPropogate()" – earl3s 2016-10-21 05:56:39

3

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

3

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 accordion prevent bubbling/allow default link action.

2

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

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

    return false; 
} 
0

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

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

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

0

То, что сработало для меня зовет:

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

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