Jquery无法选择和取消选择一个td点击它

问题描述:

我写了2个jQuery函数。第1-11行是第一个绑定mousedown上的mouseover事件以获得点击和拖动效果以选择td(内部检查/取消选中复选框)的行为。Jquery无法选择和取消选择一个td点击它

第二个功能(12-20)是在单个td上单击并取消选中以选中和取消选中复选框。我可以做mousedown并选择多个td,但我无法点击并单击td。我不确定问题在哪里?任何建议表示赞赏。

下面是代码:

$("#tbl td").mousedown(function() { 
    $("#tbl td").bind('mouseover', function() { 
     var checkbox = $(':checkbox', this)[0]; 
     $(this).css({ 
      'background': (checkbox.checked ? 'white' : '#6D7B8D') 
     }); 
     checkbox.checked = !checkbox.checked; 
    }); 
    $(this).mouseover(); 
}).mouseup(function(event) { 
    $("#td").unbind('mouseover'); 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

$('#tbl td').click(function(e) { 
    if ($(this).find('input:checkbox').is(':checked')) { 
     $(this).find('input:checkbox').attr("checked", ""); 
     $(this).css({ 
      background: "white" 
     }); 
    } else { 
     $(this).find('input:checkbox').attr("checked", "checked"); 
     $(this).css({ 
      background: "#6D7B8D" 
     }); 
    } 
});​ 

感谢

+0

你能描述一下这种行为吗?例如,当你说'我无法点击并单击td'时,你是否进入了那个'click()'函数? – ChrisHarris2012 2012-08-15 21:14:24

+2

您正在防止mouseup处理程序中的默认行为。我认为它可能会覆盖点击功能。 – scrappedcola 2012-08-15 21:22:27

+0

也许这个HTML的一个例子可以帮助你,并且有一些小题目,但你应该使用'[type =“checkbox”]',你的'css()'函数有问题,它应该有一个逗号作为分隔符。 – adeneo 2012-08-15 21:24:38

好了,我不知道如果这是你到底需要,但也许会有所帮助。

(只知道,它会如果你把HTML代码是很有益的!)

现场演示:http://jsfiddle.net/oscarj24/TATg7/

代码:

$('#tbl').on('mousedown, mouseover, mouseup, click', 'td', function(e) { 
    if(e.type == 'mousedown'){ 
     $(this).mouseover(); 
    } else if(e.type == 'mouseover'){ 
     var checkbox = $('input:checkbox'); 
     $(this).css({'background': (checkbox.is(':checked') ? 'white' : '#6D7B8D')}); 
     checkbox.prop('checked', !checkbox.checked);  
    } else if(e.type == 'mouseup'){ 
     $(this).unbind('mouseover'); 
     e.preventDefault(); 
     e.stopPropagation(); 
    } else if(e.type == 'click'){ 
     var checked = $('input:checked').is(':checked'); 
     checked ? background = 'white' : background = '#6D7B8D'; 
     $('input:checked').prop('checked', !checked); 
     $(this).css({background: background}); 
    } 
}); 
​ 
+0

呃..这里的问题是当我点击一个td时,它会进入mousedown,并在内部鼠标悬停内部点击。但是,当我点击一个单一的td我不希望控制去mousedown和鼠标悬停.. – user1028428 2012-08-15 22:22:24

+0

你可以请发布的HTML代码:-)? – 2012-08-15 22:26:47

+0

当然..其实我的Html也有PHP代码吧。 ($ hour = 0; $ hour

_ =$hour?> ”> _ =$hour?> ”名称=“ TBL [=$short?>] [=$hour?>]” 值= “=$hour?>” – user1028428 2012-08-15 22:59:07