確認はブロッキング関数であり(true / falseが返されるまでjavascriptは実行されません)、alertifyは非ブロッキングであるため(JSは実行を継続します)。Alertifyはすぐにtrue/falseを返しませんが、代わりに、おそらくすぐにundefinedを返し、ユーザーが[OK]または[キャンセル]をクリックした後、後でコールバック関数を呼び出します。このコールバック関数からの戻り値は、onclickコードの実行がすでに終了しているため(非ブロッキングであるため)、この例では効果がありません。
これを使用していると仮定します:https ://github.com/fabien-d/alertify.js/
これは、戻り値ではなく、コールバック関数で実際に機能する方法です。
alertify.confirm( message, function (e) {
if (e) {
//after clicking OK
} else {
//after clicking Cancel
}
});
コードサンプルでは、次のようなものを試してみてください。
function performDelete ( a_element ) {
// perform your delete here
// a_element is the <a> tag that was clicked
}
function confirmAction ( a_element, message, action ) {
alertify.confirm(message, function(e) {
if (e) {
// a_element is the <a> tag that was clicked
if (action) {
action(a_element);
}
}
});
}
<a href="#" onclick="confirmAction(this, 'Are you sure you wish to remove this?', performDelete); return false;">Delete</a>
編集:ユーザーが[OK]をクリックした場合にコールバック関数を呼び出す一般的な確認ダイアログに更新されました。