내가 텍스트 상자 값을 변경할 때 팝업 div를 만들려고하는데 div 외부의 아무 곳이나 클릭하여 닫을 수 있습니다 (표시 여부 : 없음). Google 제안 드롭 다운 메뉴와 유사합니다.자동 완성 검색 제안 드롭 다운 팝업
div 또는 외부에서 마우스 클릭이 발생한 날씨를 어떻게 알 수 있습니까?
javascript 및 jsp를 사용하여 구현해야합니다.
도와주세요.
내가 텍스트 상자 값을 변경할 때 팝업 div를 만들려고하는데 div 외부의 아무 곳이나 클릭하여 닫을 수 있습니다 (표시 여부 : 없음). Google 제안 드롭 다운 메뉴와 유사합니다.자동 완성 검색 제안 드롭 다운 팝업
div 또는 외부에서 마우스 클릭이 발생한 날씨를 어떻게 알 수 있습니까?
javascript 및 jsp를 사용하여 구현해야합니다.
도와주세요.
JQuery와 솔루션은
$("body > div").click(function() {
if ($(this).attr("id") == "div-id") {
// inside the DIV
} else {
// not inside the DIV
}
});
또는
$("html").click(function (e)
{
if (e.target == document.getElementById("div-id"))
alert("Inside DIV");
else
alert("Outside DIV!");
});
것 또는 자바 스크립트 코드 조각은 다음과 같이 될 것이다 :
<script type="text/javascript">
document.onclick=check;
function check(e){
var target = (e && e.target) || (event && event.srcElement);
var obj = document.getElementById('div-id');
if(target!=obj){obj.style.display='none'}
}
</script>
이 줄을 설명해 주시겠습니까? "var target = (e && e.target) || (event && event.srcElement);" – kanap008
함수'check'는 문서가 아무 곳이나 클릭되었을 때 호출되며'click' 이벤트를 전달합니다.그 행은 이벤트가 실제로 (대부분의 브라우저에서) 함수에 인수로 전달되는지 그렇지 않은지 (다른 브라우저, 아마도 IE) 전역 변수'event'에서 이벤트를 잡아 내려고 시도합니다. – Dan
순수 자바 스크립트를 작성하는 것은 일반적으로 모든 브라우저에서 올바르게 작동하도록 다른 코드를 작성해야하기 때문에 성가신 일입니다. 그래도 jQuery를 사용하면 커튼 뒤에있는 모든 것을 처리하므로 특정 브라우저를 처리하는 것을 잊어 버릴 염려가 없습니다. – Dan
한 가지 방법은 전체 화면 (보이지 않음)을 덮는 div를 팝업하고 두 div의 클릭을 캡처하여 두 팝업 div를 닫는 것입니다. body
태그에서 클릭 수를 캡처 할 수도 있습니다. 그러면 div 외부의 아무 곳에서나 클릭을 잡을 수 있습니다 (또는 이벤트가 거품이 나면 div 내에서 일부 테스트를 수행 할 수 있습니다).
때로는 마우스를 몇 초 동안 누르면 메뉴가 사라지는 팝업 CSS 메뉴와 같은 시간 제한을 사용하는 것이 더 쉬운 방법 일 수 있습니다. 당신은 onmouseleave
이벤트를 잡아 타이머를 시작하고, 또 다른 onmouseenter
이 없다면 2 초 후에 팝업 div를 숨길 수 있습니다.
희망이 도움이됩니다.
한 가지 질문입니다. 백그라운드 div가 전체 화면을 덮고 있기 때문에 팝업 div를 클릭하면 div가 닫힙니다. 내가 틀렸다면 나를 바로 잡아주세요. – kanap008
@ kanap008 : 클릭 이벤트가 버블 링되지 않은 경우가 아닙니다. 'window.event.cancelBubble = true;'를 사용하여 두 div에 전달되는 이벤트를 중지 할 수 있습니다. http://www.quirksmode.org/js/events_order.html – mellamokb
jQuery의'e.stopPropagation()'이 커튼 뒤에있는 것을 참조하십시오. – Dan
여기 jQuery로 예입니다. "test"텍스트를 클릭하면 다른 텍스트가 나타납니다. 새로 등장한 텍스트 이외의 다른 곳을 클릭하면 사라집니다.
클릭 이벤트가 내부에서 발생한 경우 (이 경우 .toggle
개체) 여기를 클릭하면 e.stopPropagation()
으로 전화가 전달되어 더 이상 전체 창으로 전파되지 않기 때문입니다. 그러나 클릭이 다른 곳에서 발생하면 창에 직접 전파되어 .toggle
이 사라집니다.
jsfiddle에서 작동하는 example을 참조하십시오.
<script src="js/jquery-1.4.4.min.js"></script>
<script>
$(function(){
$('.test').bind('click', function(e){
$('.toggle').fadeIn();
e.stopPropagation();
});
$('.toggle').bind('click', function(e){
e.stopPropagation();
});
$(document).bind('click', function(){
$('.toggle').fadeOut();
});
});
</script>
<a class="test" href="#">test</a>
<div class="toggle">asdasdsa</div>
이 질문은 관련이있을 수 (검색 쿼리와 유사 배열에서 단어를 찾는) : http://stackoverflow.com/questions/11377096/find-similar-words-in-array-of -words –
또한 다음은 유사한 단어를 찾는 데 도움이되는 관련 질문입니다. http://stackoverflow.com/search?q=javascript+levenshtein+distance –