javascript - 通过 JQuery 在多个选择框中反转所选选项在放置 div 时不起作用

标签 javascript jquery html css

首先请原谅我的英语,我不是母语人士。 我有一个非常奇怪的问题。 我有这两个多选框:

<select id="leftEntities" class="width390px" multiple="multiple" size="8">
   <option value="1">Option A</option>
   <option value="2">Option B</option>
</select>

<select id="rightEntities" class="width390px" multiple="multiple" size="8">
   <option value="1">Option C</option>
   <option value="2">Option D</option>
</select>

这个按钮应该执行所选选项的反转。

<button id="invert" class="btn btn-primary glyphicon glyphicon-transfer"></button>

这是 JQuery 代码:

$(document).ready(function(){
   $('#invert').click(function() {
   SWAPLIST.invert($(this).parent().find('select'));
   });
});

var SWAPLIST = {};
SWAPLIST.invert = function(list) {
   $(list)
   .children()
   .prop('selected', function(i, selected) {
      return !selected;
   });
}

问题是,当按钮周围没有 div 容器时,它会像它应该的那样工作,但如果我在它周围放一个容器,它就不再工作了。

换句话说,这是行不通的:

<div class="sometestclass">
   <button id="invert" class="btn btn-primary glyphicon glyphicon-transfer"></button>
</div>

最佳答案

如果 $(this).parent() 不是 select 的父级,那么它不会工作

试试这个

Live Demo

SWAPLIST.invert($("select.width390px"));

SWAPLIST.invert($("select[id$='Entities']"));

完整的解决方案

$(function(){
  $('#invert').on("click",function() {
    SWAPLIST.invert($("select[id$='Entities']"));
  });
});

关于javascript - 通过 JQuery 在多个选择框中反转所选选项在放置 div 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18827326/

相关文章:

javascript - 如何在 javascript/Jquery 中重置计时器?

javascript - 如何在限制行长度的angularjs中显示多行

javascript - 在 Safari 扩展中使用dispatchMessage时出现WebKitSubtleCrypto错误

javascript - 当通过 jQuery 为元素动态添加类时,未应用 CSS 样式

javascript - 等待发出 AngularJS HTTP 请求

html - 改变 :hover to :active for mobile touch devices

html - 表单调整大小中的 CSS/HTML 文本区域

c# - 对话框出现然后消失

javascript - ng-repeat 需要太多时间来呈现数据

javascript - 动态附加 html 时,jquery 选择器不起作用