2010-12-01 60 views
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

返回false不做任何事情,要取消jQueryUI中的事件,您需要調用事件的preventDefault()。

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

這應該適用於所有事件方法,包括自動完成。如果您希望在自動完成菜單中包含一些您希望某人選擇的自定義選項,但實際上並不想將其添加到與其綁定的輸入中,那麼方便。 :)

0

什麼工作對我來說是調用:

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

在函數結束返回false具有相同的影響,因爲它使這兩個函數調用的等價物。