【发布时间】:2026-02-13 21:20:03
【问题描述】:
当您单击面板标题时,我的面板会折叠/展开。
但这些标题中的文本通常需要选择以进行复制/粘贴。
如何防止 jQuery 事件 .slideUp 和 .slideDown 在单击鼠标以拖动以选择文本时触发?
var currentlyAnimating = false;
function setAnimationOff() {
currentlyAnimating = false;
}
function setAnimationOn(this_animation) {
currentlyAnimating = this_animation;
setTimeout(setAnimationOff, 650);
}
function panelAccordionAnimation(this_heading) {
var _meta_div = this_heading.nextAll('.panel-body, .course-heading');
var _button = this_heading.find('.heading-container-btn.right-most');
if (_meta_div.css('display') == 'none') {
this_heading
.animate({
borderBottomLeftRadius: 0,
borderBottomRightRadius: 0}, 200);
_button
.animate({
borderBottomRightRadius: 0}, 200);
_meta_div.delay(200).slideDown();
} else {
_meta_div.slideUp();
this_heading.delay(200)
.animate({
borderBottomLeftRadius: 14,
borderBottomRightRadius: 14}, 200);
_button.delay(200)
.animate({
borderBottomRightRadius: 14}, 200);
}
}
_student_details.on('click', '.top-heading.blue', function(e) {
var _heading = $(e.target);
if (_heading == currentlyAnimating) {
return false;
}
panelAccordionAnimation(_heading);
setAnimationOn(_heading);
});
_student_details.on('click', '.top-heading.blue .heading-container-title', function(e) {
var _heading = $(e.target).parent();
if (_heading == currentlyAnimating) {
return false;
}
panelAccordionAnimation(_heading);
setAnimationOn(_heading);
});
我对标题中的文本有单独的单击事件,因为我希望在单击标题时发生折叠/展开,而不是在将鼠标拖动到标题上时发生。
【问题讨论】:
-
不是“如何防止事件触发”,而是按照“当某个条件为真时如何忽略事件”的思路。
-
你能分享你正在使用的代码的相关部分吗?
-
为什么不在标题中使用链接?它可以被点击/选择...就像bootstrap accordion一样。
-
我什至不知道 bootstrap 自带手风琴!
标签: javascript jquery