我有以下代码在检测mousedown和mouseup时有效。 问题始于mouseup,我试图检查目标元素是否具有某个类。
if语句中的代码永远不会执行。
$(this).find('td:first a.tabledrag-handle').mousedown(
function(){
$(this).mouseup(
function(){
console.log('mouseup detected');
$(this).parents('tr').css('background', 'red');
if( $(this).parents('tr').hasClass('drag-previous') ){
console.log('Dragged');
$(this).parents('tr').css('background', 'blue');
}
}
);
}
);
if($(this).parents('tr')。hasClass('drag-previous'))... 代码永远不会执行。
有人可以建议更好的技术或解决这个问题吗?
更新:
我想要实现的是检测下表中的拖放事件。我需要读取拖动生成的每一行的权重,并在“自定义权重”字段中设置该数字并保存自定义权重。
这需要针对每一行进行,这就是为什么我会在十字准线上检测mousedown和mouseup,而不是在鼠标上或在行上检测。例如。
答案 0 :(得分:0)
window.jQuery('table tr').find('td:first a.tabledrag-handle').mouseenter(function () {
window.jQuery(this).parents('tr').css('background', 'red');
});
window.jQuery('table tr').find('td:first a.tabledrag-handle').mouseleave(function () {
if (window.jQuery(this).parents('tr').hasClass('drag-previous')) {
console.log('Dragged');
window.jQuery(this).parents('tr').css('background', 'blue');
}
});
答案 1 :(得分:0)
您可以直接绑定mouseup事件。不必放在mousedown下
$("td:first a.tabledrag-handle").mouseup(function (e) {
$(this).parents("tr").css('background', 'red');
if ($(this).parents("tr").hasClass('drag-previous')) {
console.log('Dragged');
$(this).parents('tr').css('background', 'blue');
}
});
如果要检查每行中的td,请像这样更改选择器
$("tr td:first-child").mouseup(function (e) {
$(this).parents("tr").css('background', 'red');
if ($(this).parents("tr").hasClass('drag-previous')) {
console.log('Dragged');
$(this).parents('tr').css('background', 'blue');
}
});