我一直在和这个人搏斗一段时间。
我希望在有人改变手风琴之前有一个确认()。
我试过了:
$(document).ready(function() {
var edited = false;
$(".accordion-me").accordion({
autoHeight: false,
navigation: true,
changestart: function(event, ui) {
if (edited) {
if (!confirm("You have unsaved changes. Do you want to navigate away?") {
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
return false;
}
}
}
});
});
没什么快乐!我也试过这样的事情
$(".accordion-me h3").each(function() {
$(this).unbind("click");
$(this).click(function(e) {
if (confirm("You have unsaved changes! Do you want to navigate away?")) {
$(this).unbind("click");
$(".accordion-me").accordion({
autoHeight: false,
navigation: true,
changestart: function(event, ui) {
if (edited) {
if (!confirm("You have unsaved changes. Do you want to navigate away?") {
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
return false;
}
}
}
});
$(this).click();
}
});
});
但又没有快乐。
非常感谢任何帮助。
干杯
答案 0 :(得分:4)
在创建手风琴时使用空事件,这将允许您使用jQuery .click函数管理手风琴的click事件。 然后,您可以处理确认框并允许仅在确认时执行手风琴点击事件。
$(document).ready(function()
{
var edited = false,
accordion_me = $('.accordion-me');
// activate the accordion, but with an empty event
accordion_me.accordion({
autoHeight: false,
navigation: true,
event: ''
});
// here's the new accordion event
$('.accordion-me h3').click(function()
{
// find the index of the event being called
var i = $('.accordion-me h3').index(this);
// if we have unsaved changes and do not confirm, stop accordion execution
if (edited && !confirm('You have unsaved changes. Do you want to navigate away?'))
{
return false;
}
// continue with the accordion execution. Activate the requested event index.
accordion_me.accordion('activate', i);
return false;
});
});
如果您的手风琴是可折叠的(就像我的手风琴一样),您的手风琴仍然可以像以前一样工作。 另外,如果您只有1个手风琴,我建议使用id来调用它而不是.accordion-me类,这将节省一些开销。 如果您仍然需要使用类来调用它,请在它之前放置一个html标记,即div.accordion-me。
答案 1 :(得分:0)
您必须将其绑定到锚标记上的click事件。例如,如果您的标题链接是:
<a href="#" class="accordionHeaderLink">header 1</a>
代码(也在document.ready函数中)
$('.accordionHeaderLink').click(function(){
if (!confirm("You have unsaved changes. Do you want to navigate away?")) {
return false;
}
});