问题是您的jScrollpane
当您尝试在删除所选元素(不知道为什么)后再次应用插件时,插件正在中断。
另外,让我指出你的代码中的错误。
此代码
$(document).delegate(".dropdown-toggle","click",function(){
var jDropdown = $(this).siblings(".dropdown-menu").find("ul.dropdown-menu");
jDropdown.jScrollPane();
});
1)你要绑定的插件每次点击的事件,这是一个不错的方法。你需要确保你只应用一次。
2)此外,您正在使用delegate
来绑定事件。这已被弃用,现在您必须使用on
来绑定事件。
从jQuery 1.7开始,.delegate()已被.on()方法取代。然而,对于较早的版本,它仍然是使用事件委派的最有效手段。有关事件绑定和委派的更多信息,请参阅.on()方法。在一般情况下,这些都是这两种方法相当于模板:
我已经重构你的代码,这是你可以做什么。 Working Fiddle
$(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.
});
});
This bug of yours seemed very interesting (I personally spent some time debugging this).
谢谢你的努力和时间。但我想告诉你一件事是,当你逐个删除选择选项,然后它的工作正常,但直到你离开4个元素。一旦你的选择选项将剩下三个选项,它停止工作。 –
@TusharPamar是的,我也看到了这个问题。对不起,我没有赶上这个更早..我会努力,看看如何解决它.. –