在jquery中使用向上/向下滑动功能时,我遇到了Firefox错误(overflow property not implemented on fieldset)。
所以我想:
这是我到目前为止所做的:
var $searchBtn = $form.find('.search-reveal');
$searchBtn.click(function(e){
var $this = $(this),
$fieldset = $this.next();
$this.toggleClass('open');
// FIX Firefox bug - https://bugzilla.mozilla.org/show_bug.cgi?id=261037
var $fieldsetInner = $fieldset.children().eq(0)
if(!$fieldsetInner.is("div")){
$fieldsetInner = $fieldset.innerWrap("<div></div>");
}
if($this.hasClass('open')){
$fieldset.addClass('open');
$form.addClass('active');
$fieldsetInner.slideDown('fast', 'easeInQuad', function(){
// REMOVE Firefox bug fix
});
} else {
$fieldsetInner.slideUp('fast', 'easeOutQuad', function(){
$fieldset.removeClass('open');
$form.removeClass('active');
// REMOVE Firefox bug fix
});
}
e.preventDefault();
});
我已尝试this建议使用display: table-column
进行修复,但这没有任何区别。
答案 0 :(得分:2)
我写了一个独立的jQuery函数来执行此操作:
$.fn.fieldsetSlideToggle = function (speed) {
var $this = $(this),
$inner = $this.children().eq(0),
display = $this.css('display'),
slideSpeed = speed ? speed : 'fast';
// 1. Check if first child of fieldset is <div>
// 2. Wrap contents in <div> if not
if (!$inner.is("div")) {
$inner = $('<div />').html($this.html());
$this.empty().append($inner);
}
// 3. SlideToggle on div
if (display == 'none') {
$this.show();
$inner.hide().slideDown(slideSpeed, function () {
$this.html($inner.html());
});
} else {
$inner.slideUp(slideSpeed, function () {
$this.html($inner.html()).hide();
});
}
}
小提琴:http://jsfiddle.net/tbDRu/6/。单击按钮以向上/向下滑动字段集。