jQuery 마우스 액자 구현 및 상자 내 데이터 선택 인 스 턴 스 코드
jquery -1.10.2.min.js,jQuery UI - v1.12.1。
jQuery 코드
더 이상 말 하지 않 겠 습 니 다.사이 에 코드 를 달 겠 습 니 다.모 르 는 곳 에 주석 을 보다.
<script type="text/javascript">
// X Y
var mouseDownX;
var mouseDownY;
// X Y
var mouseMoveX;
var mouseMoveY;
//
var isMove = false;
/* */
function init() {
$("#selected").css("display", "none");
$("#selected").css("top", "0");
$("#selected").css("left", "0");
$("#selected").css("width", "0");
$("#selected").css("height", "0");
}
$(document).ready(function() {
init();
var selectedTD = new Array();//
var TD = $("td");//
for ( var i = 0; i < TD.length; i++) {
selectedTD.push(TD[i]);
}
$("#tableDiv").mousedown(function(event) {
mouseDownX = event.clientX - $(this).offset().left;;
mouseDownY = event.clientY - $(this).offset().top;
console.log("mouseDownX=" + mouseDownX +" mouseDownY=" + mouseDownY );
if(event.target.id.match(/selected/)) {
isMove = true;
}
// ( or )
$("#tableDiv").mousemove(function(event) {
mouseMoveX = event.clientX - $(this).offset().left;
mouseMoveY = event.clientY - $(this).offset().top;
var selectDiv = document.getElementById("selected");
if (isMove) {
// , xy , jquery ui
$("#selected").draggable();
// , ,( )
var left = selectDiv.offsetLeft, top = selectDiv.offsetTop; width = selectDiv.offsetWidth, height = selectDiv.offsetHeight;
for ( var i = 0; i < selectedTD.length; i++) {
var sl = selectedTD[i].offsetWidth + selectedTD[i].offsetLeft;
var st = selectedTD[i].offsetHeight + selectedTD[i].offsetTop;
if (sl > left && st > top && selectedTD[i].offsetLeft < left + width && selectedTD[i].offsetTop < top + height) {
if (selectedTD[i].className.indexOf("selected") == -1) {
selectedTD[i].className = "selected";
}
} else {
if (selectedTD[i].className.indexOf("selected") != -1) {
selectedTD[i].className = "TD";
}
}
}
} else {
// ,
var left = selectDiv.offsetLeft, top = selectDiv.offsetTop; width = selectDiv.offsetWidth, height = selectDiv.offsetHeight;
for ( var i = 0; i < selectedTD.length; i++) {
var sl = selectedTD[i].offsetWidth + selectedTD[i].offsetLeft;
var st = selectedTD[i].offsetHeight + selectedTD[i].offsetTop;
if (sl > left && st > top && selectedTD[i].offsetLeft < left + width && selectedTD[i].offsetTop < top + height) {
if (selectedTD[i].className.indexOf("selected") == -1) {
selectedTD[i].className = "selected";
}
} else {
if (selectedTD[i].className.indexOf("selected") != -1) {
selectedTD[i].className = "TD";
}
}
}
// ,
$("#tableDiv").mouseup(function() {
console.log("mouseUpX=" + mouseMoveX + " mouseUpY=" + mouseMoveX);
isMove = false;
$(this).unbind('mousemove');
})
//
displaySelected(mouseDownY, mouseDownX, mouseMoveX, mouseMoveY);
}
})
})
// , ,
$("#selected").mouseenter(function() {
$("#selected").css("cursor", "move");
});
});
function displaySelected(mouseDownY, mouseDownX, mouseUpX, mouseUpY) {
$("#selected").css("display", "block");
$("#selected").css("top", mouseDownY);
$("#selected").css("left", mouseDownX);
var moveX = mouseMoveX - mouseDownX;
var moveY = mouseMoveY - mouseDownY;
if (moveY < 0) {
$("#selected").css("top", event.clientY - $("#table").offset().top);
}
if (moveX < 0) {
$("#selected").css("left", event.clientX - $("#table").offset().left);
}
$("#selected").css("width", Math.abs(moveX));
$("#selected").css("height", Math.abs(moveY));
}
</script>
테스트 용 htmltable 로 진행 하 는 테스트:
<div id="tableDiv" style="width: 1500px; height: 1500px;top: 100px; left:100px; position: absolute;">
<div id="selected" style="border:5px dotted rgb(239, 37, 17);position: absolute;display: none;"></div>
<table border="1" style=" width: 1500px; height: 1500px;" id="table">
<tr>
<td id="1" class="TD"></td>
<td id="2" class="TD"></td>
<td id="3" class="TD"></td>
<td id="4" class="TD"></td>
<td id="5" class="TD"></td>
<td id="6" class="TD"></td>
</tr>
<tr>
<td id="7" class="TD"></td>
<td id="8" class="TD"></td>
<td id="9" class="TD"></td>
<td id="10" class="TD"></td>
<td id="11" class="TD"></td>
<td id="12" class="TD"></td>
</tr>
<tr>
<td id="1" class="TD"></td>
<td id="2" class="TD"></td>
<td id="3" class="TD"></td>
<td id="4" class="TD"></td>
<td id="5" class="TD"></td>
<td id="6" class="TD"></td>
</tr>
</table>
<!-- ...-->
</div>
효과 도위 에서 말 한 것 은 소 편 이 소개 한 jQuery 가 마우스 상 자 를 실현 하고 상자 안의 데 이 터 를 선택 한 인 스 턴 스 코드 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
jQuery 전후 예이 기사에서는 jquery after() 및 before() 메소드의 예를 볼 것입니다. before() 메서드는 선택한 요소 앞에 지정된 콘텐츠를 삽입합니다. after() 메서드는 선택한 요소 뒤에 지정된 콘텐츠...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.