2012-12-08 3 views
2

내 내부 div mousemove에 마우스 커서를 사용하여 주위에 움직이는 것 같아요하지만 그것을 원활하게 끌 수 있도록 isDragging 변수로 끌고있다면 그것은 if 문에서 중지하고 싶습니다하지만 그것은 어떤 제안을 멈추지 않을 것 같습니다 도움이 업데이 트를 감상 할 수있다 : jsFiddle부모에게 mousedown div 봉쇄

var yellow = $('#yellow'); 
var offset = yellow.offset(); 
var offsetWidth = offset.left + yellow.width(); 
var offsetHeight = offset.top + yellow.height(); 
var isDragging = false; 

var red = $('#red'); 

$('#red').hide(); 

yellow.on('mousedown', function(event) {  
    $('#red').show(); 
}); 
yellow.on('mouseup', function(event) { 
    $('#red').hide();   
}); 
yellow.on('mousemove', function (e) { 

    if(e.pageX > offset.left + ($(red).width()/2) && e.pageX < offsetWidth - ($(red).width()/2) 
     && e.pageY > offset.top + ($(red).height()/2) && e.pageY < offsetHeight - ($(red).height()/2) && !isDragging){ 
     red.css("left", e.pageX - $(red).width()/2); 
     red.css("top", e.pageY - $(red).height()/2); 
    } 

    $('#red').draggable(
     {'containment':'#yellow', 
     start:function(event, ui) { 
      isDragging = true; 
     }, 
     drag:function(event, ui) { 
      isDragging = true; 
     },stop:function(event, ui) { 
      isDragging = false; 
     } 
    }); 
}); 


<div id="yellow"> 
    <div id="red"></div> 
</div> 

    #yellow { 
position: absolute;  
width: 250px; 
height: 250px; 
background-color: Yellow; 
} 

#red { 
position: absolute; 
width: 100px; 
height: 100px; 
background-color: red; 
z-index: 100; 
} 
+0

mousedown에 draggable을 추가하려고했지만 드래그에서만 작동하므로 포함이 작동합니다. 그러나 당신이 mousedown에 끌기를 발사 할 수 있는지는 모르겠다. 먼저 드래그를 시작해야한다고 생각한다. – ONYX

+1

- 당신이 그걸 어떻게 도와 주 었는지 - 그걸 돕기 위해서. 당신이 근본적으로 묻는 것은 전체 코드를위한 것입니다.이 코드는 Google에서 누군가의 수업을받을 수 있습니다. – Duniyadnd

+0

나는 mousedown의 ther center에있는 child div를 event.pageX 및 event.pageY 코드로 배치 할 수 있지만 부모 div의 경계를 설정할 수는 없습니다 – ONYX

답변

0

나는이 솔루션의 자랑스럽게 말할 수 있지만이 물건을 끝내야 할 것 같다

http://jsfiddle.net/pPn3v/42/

var yellow = $('#yellow'); 
var offset = yellow.offset(); 
var offsetWidth = offset.left + yellow.width(); 
var offsetHeight = offset.top + yellow.height(); 

var red = $('#red'); 

yellow.on('mousemove', function (e) { 
    if(e.pageX+red.width() < offsetWidth 
     && e.pageY+red.height() < offsetHeight){ 
     red.css("left", e.pageX); 
     red.css("top", e.pageY); 
    } 
}); 

red.on('mousemove', function (e) { 
    if(e.pageX+red.width() < offsetWidth 
     && e.pageY+red.height() < offsetHeight){ 
     red.css("left", e.pageX); 
     red.css("top", e.pageY); 
    }    
}); 
+0

div 요소를 중첩 및 추가하여 jquery-ui 라이브러리를 추가하고 draggable ({})을 추가하도록 div 요소를 변경하고 변경 한 내용을 업데이트했습니다. 예를 들어 여전히 약간의 조정이 필요합니다. 당신은 거기에서 무엇을 할 수 있습니까 http://jsfiddle.net/pPn3v/43/ – ONYX

+0

이것은 내가 http://jsfiddle.net/pPn3v/44/ – ONYX

+0

을 찾고 있었던 것 이상입니다. – ONYX