我有一个html多选选择框。当我选择/取消选择更改事件中的值时会触发它。
从事件中了解事件的最佳方式是因为选择或取消选择了某个元素?我不想要它的价值,只是改变事件是因为'选择'还是'取消选择'。
答案 0 :(得分:0)
在这里做一些假设,你有一个多选,你只需要知道是否有选择。
然后,您只需要使用缓存值检查所选选项的长度。
请看这个小提琴: http://jsfiddle.net/2uudx/1/
不是最优雅或最优化的方式,而是方向。
var sel = 0;
$('#mySelect').on("change", function() {
var newsel = $(this).find(":selected").length;
if (newsel > sel) {
// selected
} else {
if (newsel < sel) {
// de-selected
} else {
// no-change
}
}
sel = newsel;
});
如果确实需要比较选择或取消选择的值,则不是缓存长度,而是将所选值缓存在数组中。在更改上,将当前选定的值与缓存的数组进行比较。
希望能给出合适的指针。
<强>更新强>:
使用值进行更准确的比较,如上所述,通过数组。
以下是一个示例小提琴: http://jsfiddle.net/u9XE4/3/
var sel = [];
$('#s1').on("change", function() {
var newsel = $(this).val();
var same = compareArray(newsel, sel);
if (same) {
// no-change
} else {
if ((!same) && ((newsel.length == sel.length) || (newsel.length < sel.length))) {
// de-selected
} else {
// selected
}
}
sel = newsel;
});
function compareArray(a, b) {
$.each( a, function( key, value ) {
var index = $.inArray( value, b );
if( index != -1 ) {
return true;
}
});
return false;
}
希望有所帮助。