在鼠标悬停时自动展开手风琴,但防止在鼠标悬停时折叠
Auto expand accordion on mouseover but prevent collapsing on mouseover
我可以让我的手风琴在悬停时自动打开一个部分,但我不知道如何防止它在将鼠标光标移动到手风琴的活动 header 上时折叠一个部分。
以下是我的代码:
$("#accordion").accordion({
event: 'mousedelay'
}).delegate('.ui-accordion-header', 'mouseover', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
$(this).closest('.ui-accordion').data('timeout', setTimeout($.proxy(function() {
$(this).trigger('mousedelay');
}, this), 500));
});
如何更改代码,使活动部分仅在单击(而不是鼠标悬停)时折叠?
经过一些摆弄(这是我第一次尝试jquery-ui),我解决了我自己的问题:
$(document).ready(function() {
$( "#accordion" ).accordion( {
collapsible: true,
active: false,
icons: null,
animate: 500
});
$('#accordion').accordion({
event: 'mousedelay'
});
$('.ui-accordion-header')
.on('mouseover', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
if (!$(this).hasClass('ui-state-active')) {
$(this).closest('.ui-accordion').data('timeout', setTimeout($.proxy(function() {
$(this).trigger('mousedelay');
}, this), 500));
};
})
.on('mouseleave', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
})
.on('click', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
if (!$(this).next('div').is(':animated')) { $(this).trigger('mousedelay'); }
});
});
代码是这样工作的:
- 如果光标在不活动的 header 上,该部分会在延迟后展开
- 如果光标位于活动 header 上,则什么都不做
- 鼠标点击切换一个部分的状态
- 如果手风琴正在动画,则鼠标点击静音
我可以让我的手风琴在悬停时自动打开一个部分,但我不知道如何防止它在将鼠标光标移动到手风琴的活动 header 上时折叠一个部分。
以下是我的代码:
$("#accordion").accordion({
event: 'mousedelay'
}).delegate('.ui-accordion-header', 'mouseover', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
$(this).closest('.ui-accordion').data('timeout', setTimeout($.proxy(function() {
$(this).trigger('mousedelay');
}, this), 500));
});
如何更改代码,使活动部分仅在单击(而不是鼠标悬停)时折叠?
经过一些摆弄(这是我第一次尝试jquery-ui),我解决了我自己的问题:
$(document).ready(function() {
$( "#accordion" ).accordion( {
collapsible: true,
active: false,
icons: null,
animate: 500
});
$('#accordion').accordion({
event: 'mousedelay'
});
$('.ui-accordion-header')
.on('mouseover', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
if (!$(this).hasClass('ui-state-active')) {
$(this).closest('.ui-accordion').data('timeout', setTimeout($.proxy(function() {
$(this).trigger('mousedelay');
}, this), 500));
};
})
.on('mouseleave', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
})
.on('click', function() {
clearTimeout($(this).closest('.ui-accordion').data('timeout'));
if (!$(this).next('div').is(':animated')) { $(this).trigger('mousedelay'); }
});
});
代码是这样工作的:
- 如果光标在不活动的 header 上,该部分会在延迟后展开
- 如果光标位于活动 header 上,则什么都不做
- 鼠标点击切换一个部分的状态
- 如果手风琴正在动画,则鼠标点击静音