有在你的代码的两个问题,
1,获取所选选项的代码是错误的。以下是它应该如何。
var selectedOpts = $(this).prev('select').find('option:selected');
2,该代码获取到移动选项选择是错误的。我想不到一个不使用css选择器的方式来获取选择。在我看来,这样做明显地表达了意图。
修改后的标记(添加CSS类到每个选择):
toto
titi
tata
tutu
修改JS
$('[id^=\"btnRight\"]').click(function (e) {
var $selectedOpts = $(this).prev('select').find('option:selected'),
$nextSelect = $(this).siblings('.js-leftSelect');
if ($selectedOpts.length === 0) {
alert('Nothing to move.');
e.preventDefault();
} else {
$nextSelect.append($selectedOpts.clone());
$selectedOpts.remove();
}
});
$('[id^=\"btnLeft\"]').click(function (e) {
var $selectedOpts = $(this).next('select').find('option:selected'),
$prevSelect = $(this).siblings('.js-rightSelect');
if ($selectedOpts.length === 0) {
alert('Nothing to move.');
e.preventDefault();
} else {
$prevSelect.append($selectedOpts.clone());
$selectedOpts.remove();
}
});