Twitter bootstrap jScrollpane不使用引导选择器刷新方法

Twitter bootstrap jScrollpane不使用引导选择器刷新方法,twitter-bootstrap,jscrollpane,Twitter Bootstrap,Jscrollpane,我尝试将jScrollpane自定义滚动条与引导选择选择器下拉列表集成当我们从下拉列表中删除任何选项元素并使用selectpicker刷新方法刷新它时/jScrollpane滚动条停止工作 请有一个附加的演示链接看看,以获得更多的想法。让我知道解决办法 演示URL: JSFIDLE URL: 谢谢。问题在于,当您删除所选元素后再次尝试应用插件时,您的jScrollpane插件出现故障(不确定原因) 我还要指出代码中的几个错误 此代码 $(document).delegate(".dropdown

我尝试将jScrollpane自定义滚动条与引导选择选择器下拉列表集成<代码>当我们从下拉列表中删除任何选项元素并使用selectpicker刷新方法刷新它时/jScrollpane滚动条停止工作

请有一个附加的演示链接看看,以获得更多的想法。让我知道解决办法

演示URL:

JSFIDLE URL:


谢谢。

问题在于,当您删除所选元素后再次尝试应用插件时,您的
jScrollpane
插件出现故障(不确定原因)

我还要指出代码中的几个错误

此代码

$(document).delegate(".dropdown-toggle","click",function(){
    var jDropdown = $(this).siblings(".dropdown-menu").find("ul.dropdown-menu");
    jDropdown.jScrollPane();
});
1)您正在为每个单击事件绑定插件,这是一种糟糕的方式。您需要确保只应用一次

2)您还可以使用
delegate
绑定事件。这是不推荐使用的,现在您必须使用上的
来绑定事件

从jQuery 1.7开始,.delegate()已被.on()方法取代。但是,对于早期版本,它仍然是使用事件委派的最有效方法。有关事件绑定和委托的更多信息,请参见方法。通常,这是两种方法的等效模板:


我已经重构了你的代码,这是你能做的

$(document).ready(function() {

  var jDropdown = $('#country').siblings(".dropdown-menu").find("ul.dropdown-menu");
  jDropdown.jScrollPane(); // bind event on document ready, and only once

  $(document).on("change", ".selectpicker", function() {
    var selectedIndex =  $('#country').prop('selectedIndex');
    $(this).siblings(".dropdown-menu").find("ul.dropdown-menu li[data-original-index='" + selectedIndex + "']").remove();
    // directly remove the li elements of the plugin, or you can even hide them.
  });
});

你的这个bug看起来很有趣(我个人花了一些时间调试它)。

谢谢你的努力和时间。但我想提醒你们一件事是,当你们一个接一个地移除选择选项时,它就正常工作了,但直到你们只剩下4个元素。一旦您的选择选项留下三个选项,它就会停止工作。@TusharPamar是的,我也看到了这个问题。对不起,我没早点听清楚。。我将继续努力,看看如何解决它。。