2009-09-06 4 views
0
var func = function() 
{ 
    $(this).hide(); 
    $parent = $(this).parent(); 
    $parent.removeClass('my_signature_mouseover'); 
    var text = $(this).val(); 
    var $span = $("#status span"); 
    $span.text(text); 
    $span.show(); 
}; 
$("#status input").keyup(function (e) { 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 13) { 
     func(); 
    } 
}).blur(func); 

흐림 또는 "Enter"키를 누르면 func을 실행시키고 싶습니다. 위 코드는 "Enter"키를 누를 경우 흐림 효과가 인 경우에만 작동하며 "Permission denied to access parentNode"라고보고합니다.다음 jQuery 스 니펫 작업을 수행하는 방법은 무엇입니까?

비록 내가 다른 문맥에서 this 키워드와 관련이 있다는 것을 알고 있지만 어떻게 수정해야하는지 잘 모릅니다.

답변

1

, 내부 func 원인 일반 함수 호출과 함께 this 변수가 전역 객체 (창)를 참조한다.

당신은 이벤트 트리거 요소 컨텍스트합니다 ('this' 값), 보존하기 위해, call과 기능을 실행할 수 있습니다

$("#status input").keyup(function (e) { 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 13) { 
     e.preventDefault(); // stop event propagation 
     func.call(this); 
    } 
}).blur(func); 
+0

를이 (near.But 내가 전화 한 $있어 this) .select()를 먼저 입력하고 "Enter"키를 누르면 입력 값이 지워진다. – omg

+0

keyup 이벤트의 전파를 취소하고 싶을 수도 있습니다 ... edited ... – CMS

+0

작동하지 않습니다. 기본 동작 후에 keyup 함수가 호출됩니다. – omg

-1

이 시도 : 당신은 func를 호출

var func = function(elem) 
{ 
    elem.hide(); 
    var $parent = elem.parent(); 
    $parent.removeClass('my_signature_mouseover'); 
    var text = elem.val(); 
    var $span = $("#status span"); 
    $span.text(text); 
    $span.show(); 
}; 
$("#status input").keyup(function (e) { 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 13) { 
     func($(this)); 
    } 
}).blur(function() { 
    func($(this)); 
});