문제

내가 사용하는 jQuery 를 설정 가져 콜백을 위해 요소에 내 페이지입니다.나는 지금 쓰는 모듈을 필요로 일시적으로 새로운 가리키는 행동에 대한 어떤 요소입니다.새로운 모듈을 액세스 할 수 없습니다 원래 코드를 가리키는 기능.

고 싶 저장 오래된 기능을 가리키기 전에 새로운 사람은 그래서 나는 그들을 복원할 수 있습으로 완료되면 임시버니다.

이런 생각 저장될 수 있습 사용 jQuery.data() 기능:

//save old hover behavior (somehow)

$('#foo').data('oldhoverin',???)

$('#foo').data('oldhoverout',???);

//set new hover behavior

$('#foo').hover(newhoverin,newhoverout);

할 물건으로 새로운 가져 행동...

//restore old hover behaviour
$('#foo').hover($('#foo').data('oldhoverin'),$('#foo').data('oldhoverout'));

그러나 내가 어떻게 현재 등록된 가리키는 함수에서 jQuery?

Shadow2531,나이 작업을 수행하기 위해 노력하고 수정하지 않고 코드는 원래 등록 콜백이 있습니다.당신의 제안은 것이 잘 작동하지 않습니다.감사에 대한 제안을 수 있도록 명확히 무엇이겠습니다.어쩌면 내가로 가서 원본의 jquery 는 방법을 알아낼 이러한 콜백은 저장된 내부적으로 합니다.어쩌면 내가 변경 질문하는"그것은 이렇게 수정하지 않고 jquery?"

도움이 되었습니까?

해결책

호출 이벤트 bind 방법(예: hover)삭제하지 않는 옛 이벤트 처리,추가의 새로운 이벤트,그래서 당신의 아이디어의'복원하는'오래된 이벤트 기능이 작동하지 않을 것,그것이 없을 삭제하 이벤트로 구성되어 있습니다.

추가할 수 있습니다 자신의 이벤트,그리고 그 제거에 영향을 미치지 않고 다른 이벤트를 다음 사용하 이벤트 namespacing: http://docs.jquery.com/Events_(가)#Namespacing_events

다른 팁

가 확실하지 않으면 이동,하지만 당신이 시도 할 수 있습니다:


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Jquery - Get, change and restore hover handlers</title>
        <script src="jquery.js"></script>
        <script>
            function setHover(obj, mouseenter, mouseleave) {
                obj.data("_mouseenter", mouseenter);
                obj.data("_mouseleave", mouseleave);
                obj.hover(obj.data("_mouseenter"), obj.data("_mouseleave"));
            }
            function removeHover(obj) {
                obj.unbind("mouseenter", obj.data("_mouseenter"));
                obj.unbind("mouseleave", obj.data("_mouseleave"));
                obj.data("_mouseenter", undefined);
                obj.data("_mouseleave", undefined);
            }
            $(document).ready(function() {
                var test = $("#test");
                setHover(test, function(e) {
                    alert("original " + e.type);
                }, function(e) {
                    alert("original " + e.type);
                });
                var saved_mouseenter = test.data("_mouseenter");
                var saved_mouseleave = test.data("_mouseleave");
                removeHover(test);
                setHover(test, function() {
                    alert("zip");
                }, function() {
                    alert('zam');
                });
                removeHover(test);
                setHover(test, saved_mouseenter, saved_mouseleave);
            });
        </script>
    </head>
    <body>
        <p><a id="test" href="">test</a></p>
    </body>
</html>

그렇지 않다면,아마도 그것은 당신이 몇 가지 아이디어.

나는 확실하지 않으면 이것은 당신이 무엇을 의미하지만,바인딩할 수 있습니다 사용자 정의 이벤트는 다음을 트리거합니다.

http://docs.jquery.com/Events/bind

그래서 추가로 가리키기 이벤트,스크립트 기능을 위해 필요한 것을 가져가는,다음의 사용자 정의 이벤트입니다.

어쩌면 그것을 쉽게 될 것을 그냥 숨기기 오래된 요소들과 함께 복제 당신의 이벤트 처리기는가?그냥 스왑시에 요소가 완료되면..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top