2012-09-21 92 views
0

我想让JScrollPane重新初始化我的手风琴的展开/折叠,发现here。您可以通过点击其中一位父母(石块,石盆,石墙等)来演示手风琴。JScrollPane插件 - 重新初始化崩溃

现在,我将其设置为使用以下JQuery的click事件...

var pane = $('.menuwrap') 
pane.jScrollPane(); 
var api = pane.data('jsp'); 
var i = 1; 

$("ul#widget-collapscat-5-top > li.collapsing").click(function() { 
    $(this).delay(3000); 
    api.reinitialise(); 
}); 

看来,当您单击父第二次,但不是第一个工作。我不知道为什么,但我试图编辑手风琴的JS,以便在完成合并时添加此功能(而不是尝试执行此点击解决方法)。崩溃JS可以查看here

我试着为这里的重新初始化函数添加JS,但我认为我没有做正确的事情。

请问您是否指向正确的方向?

谢谢!

回答

0

api.reinitialise()工作正常。发生的事情是,当你点击时,它会更新大小,并且此时该元素还没有被扩展。您可能会注意到,如果您再次膨胀,膨胀并再次膨胀同一部分,则什么都不会发生。但是,如果展开一个,然后再单击另一个,ScrollPane将调整为第一个展开元素的大小。

你可以用事件解决这个问题:当合并结束时,放置$(this).trigger('colapseComplete')。那么你可以使用:

//Listening to the colapseComplete event we triggered above 
$("#widget-collapscat-5-top > li.collapsing").on('colapseComplete', function() { 
    api.reinitialise(); 
}); 
0

也许你可以改变addExpandCollapse函数调用reinitialise功能在它的每一个点击行为的这种方式结束:

function addExpandCollapse(id, expandSym, collapseSym, accordion) { 
    jQuery('#' + id + ' .expand').live('click', function() { 
    if (accordion==1) { 
     var theDiv = jQuery(this).parent().parent().find('span.collapse').parent().find('div'); 
     jQuery(theDiv).hide('normal'); 
     jQuery(this).parent().parent().find('span.collapse').removeClass('collapse').addClass('expand'); 
     createCookie(theDiv.attr('id'), 0, 7); 
    } 
    jQuery('#' + id + ' .expand .sym').html(expandSym); 
    expandCat(this, expandSym, collapseSym); 

    api.reinitialise(); // HERE 

    return false; 
    }); 
    jQuery('#' + id + ' .collapse').live('click', function() { 
    collapseCat(this, expandSym, collapseSym); 

    api.reinitialise(); // and HERE 

    return false; 
    }); 
} 

,而且成为一个更安全起见,请确保您有var api = pane.data('jsp');线之前的文件中的任何地方的上面的一段代码。