我对 jquery 和复选框有一个奇怪的行为。在我的表格中,我用一些数据构建了一个表格。用户可以单击行或输入复选框以选择行并将它们添加到选择中。 例如,我构建了这个小提琴 所以当您单击行时,就可以了,该行被选中并且我得到了我的 id。但是当您第一次单击输入时,输入会被选中,但是当我们释放按钮时,他会被取消选中。如果我们再次点击之后,行为是正确的。我知道我做错了什么,但不知道是什么。我需要使用 mousedown 事件进行多项选择,并允许用户一键选择多个 id。
_isMouseDown = false;
jQuery(document).on('mousedown',function(event) {
_isMouseDown = true;
});
jQuery(document).on('mouseup',function(event) {
_isMouseDown = false;
});
(function($) {
var sTableId = 'lois_server_select';
var aAvailableServerClicked = new Array();
var aServerSelectedClicked = new Array();
$('.lois_server_select tr').hover(
function () {
if(_isMouseDown == true){
//exec onmousedown
$(this).trigger('mousedown');
}
},function (){}
);
//bug with the first click on checkbox unchecke the input
$('.lois_server_select input').click(function(evt){
_that = $(this);
if(_that.closest('tr').hasClass('clicked')){
_that.prop('checked',true);
} else {
_that.prop('checked',false);
}
});
$('.lois_server_select tr').bind('mousedown',function(evt) {
console.log('this',this);
var _that = $(this);
var _checkbox = $(':checkbox',_that);
console.log('checkbox',_checkbox);
console.log('start checked:',_checkbox.attr('checked'));
if(_checkbox.val() == undefined) return;
console.log('checked:',_checkbox.prop('checked'));
if(_that.hasClass('clicked')){
//remove class
_that.removeClass('clicked');
//uncheck checkbox
_checkbox.prop('checked',false);
//remove to aAvailableServerClicked
if(sTableId == 'lois_server_select'){
aAvailableServerClicked.splice($.inArray(_checkbox.val(), aAvailableServerClicked),1);
} else {
aServerSelectedClicked.splice($.inArray(_checkbox.val(), aServerSelectedClicked),1);
}
} else {
//add selected class
_that.addClass('clicked');
//check checkbox
_checkbox.prop('checked',true);
//add to aAvailableServerClicked
if(sTableId == 'lois_server_select'){
aAvailableServerClicked.push(_checkbox.val());
} else {
aServerSelectedClicked.push(_checkbox.val());
}
}
console.log('end checked:',_checkbox.attr('checked'));
//evt.stopPropagation();
});
})(jQuery);
谢谢你的帮助。