특정 요소 위에서 마우스 왼쪽 버튼을 누르고있는 동안 특정 간격으로 함수를 정기적으로 호출하고 싶습니다. jQuery에서이 작업을 수행하는 간단한 방법이 있습니까? 아니면 바닐라 javascript와 setInterval/setTimeout을 사용해야합니까?jQuery - mousedown에서 일반 함수 호출 트리거
감사
특정 요소 위에서 마우스 왼쪽 버튼을 누르고있는 동안 특정 간격으로 함수를 정기적으로 호출하고 싶습니다. jQuery에서이 작업을 수행하는 간단한 방법이 있습니까? 아니면 바닐라 javascript와 setInterval/setTimeout을 사용해야합니까?jQuery - mousedown에서 일반 함수 호출 트리거
감사
는 여기 mousehold
이벤트를 제공하는 jQuery 플러그인입니다.
http://remysharp.com/2006/12/15/jquery-mousehold-event/
당신은 demo page에 가서 어떻게 작동하는지 볼 수 있습니다 마지막 입력 상자의 오른쪽에있는 화살표 중 하나를 클릭합니다. 다음과 같이
jQuery를 결과로 지원을보고 어떤 기능을 제공하지 않습니다, 당신은 바닐라의 setTimeout 기능을 사용할 수 있습니다
HTML을 :
var timer;
function functionToRun() {
// Function code here...
functionToRun();
}
var inFunction = function() {
timer = window.setTimeout(functionToRun, intervalToRunFor);
}
var outFunction = function() {
window.clearTimeout(timer);
}
$('selector').hover(function() { inFunction, outFunction }
이 예제는 호버링에 사용되지만 @Richard는 왼쪽 마우스 버튼을 누르고있는 솔루션을 원합니다. – jessegavin
이 코드를 작성하면 선택한 요소 위에 마우스를 올리 자마자 무한 루프가됩니다. – Alnitak
var mouseDown = false;
$('#yourID').bind('click', function() {
mouseDown = true;
});
$('#yourID').bind('mouseup', function() {
mouseDown = false;
});
setInterval('checkOut();',5000);
function checkOut() {
if(mouseDown) alert('mouse is down! Whatup!');
});
이벤트가 발생했는지 여부에 관계없이 checkOut() 함수가 5 초마다 호출됩니다. 마우스를 아래로 시작하고 마우스를 위로 올려 타이머가 필요합니다. –
내 편이 잘못되었습니다. 5 초마다 마우스를 누르면 실행되는 기능이 필요하다고 생각했습니다. – rsplak
이것은 내가 어떻게 할 것입니다 :
<div id="box"></div>
자바 스크립트 :
var box = $('#box'),
iv;
function foo() {
box.append('*');
}
box.bind('mousedown mouseup', function(e) {
$(this).toggleClass('hold', e.type === 'mousedown');
});
iv = setInterval(function() {
box.hasClass('hold') && foo();
}, 1000);
따라서 처리기를 mousedown
및 mouseup
이벤트에 바인딩하고 그에 따라 hold
CSS 클래스를 설정합니다. 한편, 독립적 인 타이머 iv
은 hold
클래스가 설정되었는지 여부를 검사하고 그에 따라 함수 (foo
)를 호출합니다.
라이브 데모 : 제안에 대한http://jsfiddle.net/simevidas/7CUFE/
jsfiddle를 보았습니다. 그건 잘 작동하는 것, 감사합니다 Logged –
감사합니다. 나는 더 많은 플러그인/libs를 피하려고 노력하고 있지만, Sime의 해결책이 효과가 없다면 나는 그것을 시도 할 것이다. –