jQuery Accordion 1.6 event事件使用方法
2012-09-21 10:50 Fred-Xu 阅读(1667) 评论(0) 编辑 收藏 举报由于公司老的网站系统都是使用的jquery.accordion-1.6,而现有accordion已经升到版本1.8了,文档也都是1.8的,event事件有chage, changestart, create三个,本以为1.6版本也适用change和changestart事件,结果测试发现根本无法trigger这个事件,查看了下1.6的文档:
有这么一段代码
$(".ui-accordion").bind("accordionchange", function(event, ui) { ui.options // options used to intialize this widget ui.newHeader // jQuery, activated header ui.oldHeader // jQuery, previous header ui.newContent // jQuery, activated content ui.oldContent // jQuery, previous content });
试了一下还是没法trigger到,好吧,开始看accordion的源码...
function completed(cancel) { // if removed while animated data can be empty if (!$.data(this, "ui-accordion")) return; var instance = $.data(this, "ui-accordion"); var options = instance.options; options.running = cancel ? 0 : --options.running; if (options.running) return; if (options.clearStyle) { options.toShow.add(options.toHide).css({ height: "", overflow: "" }); } $(this).triggerHandler("change.ui-accordion", [options.data], options.change); }
绑定的是change.ui-accordion而非accordionchange,改下可以work了:
$('#gameList').bind('change.ui-accordion', function (event, ui) { var h; ui.newContent.find('.gameAnswers').each(function (i) { if (i == 0) h = $(this).height(); else { if (h < $(this).height()) h = $(this).height(); } }); ui.newContent.height(h).slideDown(); });
吐槽下:还是读源码可以解决问题,但是需要有耐心...