在这里几天后,我感觉自己走错了路
尝试使用<select>
来跟踪多个客户选择。
<div id="ajax">
<select id="select_site" name="site" multiple>
<option value="" selected>checked</option>
<option value="" selected>checked</option>
<option value="">unchecked</option>
<option value="">unchecked</option>
</select>
<button id="continue" type="button">Save</button>
</div>
期望的结果:
点击勾选警报('减去已检查')
点击未选中的提醒('添加到已选中')
$('#ajax').on('click', '#select_site option', function () {
var checked = $('#select_site option:selected');
if ($(this).prop('selected') == 'selected') {
alert('subtract from checked');
} else {
alert('add to checked');
}
$('#select_site').empty();
$.each(checked, function (i, v) {
$('#select_site').append(v);
});
});
$('#ajax').on('click', '#continue', function () {
var checked = $('#select_site option:selected');
alert(checked);
});
感谢您的帮助!
答案 0 :(得分:1)
您的脚本中存在一些错误。
1:它不会在鼠标点击上,而是在mousedown
上,因此您可以提供默认行为。
2:正如我所说,你需要防止默认行为,所以你确定了这个:
pseudo-on(function(e){
e.preventDefault()
//Your code
})
3:使用.prop()
返回一个布尔值,所以此刻,你的条件总是假的。您的情况可以简单地为if ($(this).prop('selected'))
4:由于阻止了默认行为,您需要手动添加或删除所选选项。
5:因为您手动选择选项,所以必须声明var checked
。
6:我不知道你对附加.each()
循环的意图是什么,但我不认为你的解决方案需要它。在这种情况下,var checked
也将毫无用处。
这是一个工作小提琴:http://jsfiddle.net/akshC/1/