2011-08-31 4 views
0

나는이처럼 정렬하는 div 수가 많은 :JQuery에서 왼쪽 마우스 버튼 선택을 에뮬레이션 할 수 있습니까?

나는 사용자가 마우스 왼쪽 버튼을 보유하고 가리킬 때 각 DIV의 클래스를 전환 변경할
+---------------+ 
| DIV 1   | 
+---------------+ 
| DIV 2   | 
+---------------+ 
| DIV 3   | 
+---------------+ 
| ...   | 

.

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

관련 문제