2011-08-31 21 views
0

我有一大批像這樣排列的DIV:可以模擬在JQuery中的鼠標左鍵選擇?

+---------------+ 
| DIV 1   | 
+---------------+ 
| DIV 2   | 
+---------------+ 
| DIV 3   | 
+---------------+ 
| ...   | 

我想更改爲撥動類的每個DIV的當用戶將鼠標左鍵並懸停在他們。

isMouseDown = false 

$('body').mousedown(function() { 
    isMouseDown = true; 
}) 
.mouseup(function() { 
    isMouseDown = false; 
}); 

$(".div").live("mouseenter", function() { 

    if (isMouseDown) { 
     $(this).toggleClass("selected"); 
    } 
}); 

我目前做這種方式,但它在用戶使用鼠標右鍵,只有真正的作品,因爲左邊的按鈕觸發瀏覽器的默認選擇行爲。

是否有可能使用鼠標左鍵這項工作呢?

編輯:工作代碼:

isMouseDown = false 

$('body').mousedown(function (e) { 
    e.preventDefault(); // Prevent default behavior 
    isMouseDown = true; 
}) 
.mouseup(function (e) { 
    e.preventDefault(); // Prevent default behavior 
    isMouseDown = false; 
}); 

$(".div").live("mouseenter", function (e) { 
    e.preventDefault(); // Prevent default behavior 
    if (isMouseDown) { 
     $(this).toggleClass("selected"); 
    } 
}); 
// Because IE8 won't get it without this... 
$(".div").mousemove(function (e) { 
    if ($.browser.msie) { 
     e.preventDefault(); 
     return false; 
    } 
}); 

回答

2

你基本上要防止瀏覽器事件的默認行爲。

然後只需使用jQuery preventDefault方法。

isMouseDown = false 

$('body').mousedown(function (e) { 
    e.preventDefault(); // Prevent default behavior 
    isMouseDown = true; 
}) 
.mouseup(function (e) { 
    e.preventDefault(); // Prevent default behavior 
    isMouseDown = false; 
}); 

$(".div").live("mouseenter", function (e) { 
    e.preventDefault(); // Prevent default behavior 
    if (isMouseDown) { 
     $(this).toggleClass("selected"); 
    } 
}); 
+0

完美地工作,非常感謝。 – xsl