Jquery 尝试停止Select2多选选项remove的事件传播

Jquery 尝试停止Select2多选选项remove的事件传播,jquery,twitter-bootstrap,jquery-select2,Jquery,Twitter Bootstrap,Jquery Select2,我的UI有一些从引导创建的下拉列表,我用它来包含一些表单元素。我用我在这里找到的解决方案阻止下拉列表关闭,这几乎是完美的: 剩下的问题是我使用Select2 mutliple select和remove选项的特定实例。在关闭下拉列表时,删除操作似乎遵循不同的事件链。我的假设是事件正在向上传播到父元素,但我似乎无法确定是哪个 下面是一个例子来说明这个问题。选择一个选项,然后将其删除以查看结果。下面是包含JSFIDLE时所需的代码。当然,这是从我的实际代码中删减的,但至少代表了这个问题 $('bo

我的UI有一些从引导创建的下拉列表,我用它来包含一些表单元素。我用我在这里找到的解决方案阻止下拉列表关闭,这几乎是完美的:

剩下的问题是我使用Select2 mutliple select和remove选项的特定实例。在关闭下拉列表时,删除操作似乎遵循不同的事件链。我的假设是事件正在向上传播到父元素,但我似乎无法确定是哪个

下面是一个例子来说明这个问题。选择一个选项,然后将其删除以查看结果。下面是包含JSFIDLE时所需的代码。当然,这是从我的实际代码中删减的,但至少代表了这个问题

$('body').on('click', '.dropdown .cycle-element', function(e) {
  $(this).parent().toggleClass('open');
});

$('body').on('click', function(e) {
  if (!$('.dropdown').is(e.target) && $('.dropdown').has(e.target).length === 0 && $('.open').has(e.target).length === 0) {
    $('.dropdown').removeClass('open');
  }
});

$('.dependency-select').select2();

@这是你能做的。我还没有完全测试过它,但乍一看,当div关闭时关闭select2似乎是一个解决方案

您可以关闭select2,如下所示

$('.dependency-select').select2('close');

这是最新的代码。看看吧

我们遇到了基本相同的问题。潜在的问题是,当使用select2 multiselect时,删除选项时触发的取消选择事件会传播并最终关闭引导下拉列表

处理此问题的简单方法是侦听事件并停止传播

$('your-select').on("select2:unselect", function(e) {
  if (!e.params.originalEvent) {
    return
  }

  e.params.originalEvent.stopPropagation();
});

你最终想要实现什么?当用户单击“单击我”打开下拉列表。当用户在
单击我之外单击时
是否关闭下拉列表?并在用户选择时保持“选择选项”处于打开状态?这就是你想要实现的吗?几乎。我仍然希望它关闭,如果我点击任何地方以外的引导下拉区域。您的代码似乎没有我描述的问题,尽管我认为这是因为您只需在单击“单击我”文本时切换打开/关闭。我的主要问题是,如果选择了SELECT选项,然后单击“删除X”,整个Bootstrap下拉关闭,但留下选择选项可见,并漂浮在无处。试试看我原来的小提琴是什么意思。我的英雄:)谢谢!工作得很有魅力。我知道这与冒泡有关,但在
e.
上使用了
stopPropagation
,而不是
e.params.originalEvent