2012-08-15 74 views
1

我已經寫了一個jquery函數來綁定mousedown上的鼠標懸停事件以獲得點擊和拖動來選擇td的效果。我在桌子排上有10個td。這個代碼的問題是,如果我想從1到5中選擇td,並且在td1和mouseover上執行mousedown直到td5,td1不會被選中(我正在檢查/取消選中複選框),而是從td2中選擇TD5。我如何解決它? 任何建議表示讚賞。Jquery Mousedown和Mouseover問題

下面是代碼:

$("#custom-interval-tbl td").mousedown(function() { 
    $('#custom-interval-tbl td').bind('mouseover',function(){ 
      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"}); 
      } 
    }); 
}); 

感謝

+3

順便說一句,你可以/應該使用http://api.jquery.com/removeAttr/而不是設置屬性'「」' – TheZ 2012-08-15 18:18:54

+0

順便說一句,你可以/應該使用[API。 jquery.com/prop](http://api.jquery.com/prop)而不是'removeAttr'或'attr'。 – iambriansreed 2012-08-15 18:28:09

回答

0

當分配mouseover事件,這是從來沒有在一個地方的鼠標已經下跌激活。 (由於鼠標已經結束,它永遠不會被調用。)

你可以強制在你已經選擇的TD上調用它。

$("#custom-interval-tbl td").mousedown(function() { 
    $('#custom-interval-tbl td').bind('mouseover',function(){ 
      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"}); 
      } 
    }); 
    $(this).mouseover(); // This part will call the mouseover event on your clicked TD 
}); 
+0

謝謝!所有的快速建議 – user1028428 2012-08-15 20:52:13