2012-04-11 3 views
2

양식 요소에 흐림 효과를 적용하려고합니다. 내가 겪고있는 문제는 두 번째 함수에 ID, 클래스 등의 요소 정보를 전달하는 것입니다. 나는이 예를 들어 아래로 단순화했습니다 :jquery : 양식 요소 정보를 다른 함수로 전달하는 방법은 무엇입니까?

물론
function otherfunction() { 
    var inputID = $(this).attr("id"); 
    alert(inputID); 
} 


$(".formelement").blur(function() { 

// Do some stuff here 

otherfunction(); 

}); 

, 경고 상자가 inputID가 정의되지 않은 것을 말한다. 요소의 정보를 다른 함수로 전달하려면 어떻게해야합니까?

+0

당신은 단순히 this.id' 대신 $ (이)'의 요소의 ID에 액세스하기 위해'사용할 수 있습니다 .attr ('ID') ' –

답변

3

인수로 입력을 전달합니다 사용

function otherfunction(el) { 
    var inputID = $(el).attr("id"); 
    alert(inputID); 
} 


$(".formelement").blur(function() { 
    // Do some stuff here 

    otherfunction(this); 
}); 

또는 Function.prototype.apply :

function otherfunction() { 
    var inputID = $(this).attr("id"); 
    alert(inputID); 
} 


$(".formelement").blur(function() { 
    // Do some stuff here 

    otherfunction.apply(this); 
}); 
+0

와우는 내가 그 해답을 찾을 수 없다고 믿을 수 없다! 정말 고맙습니다. – JROB

2

사용 $.proxy의 경우 :

$(".formelement").blur($.proxy(otherfunction, this)); 

그리고 다른 자바 스크립트의 call 또는 apply :

$(".formelement").blur(function() { 

    // Do some stuff here 

    otherfunction.call(this); // or otherfunction.apply(this); 
}); 
+2

일종의 ... 그러나'$ .proxy'는 실제로 함수를 호출하지 않습니다. 그냥'this' 값을 보장하는 함수를 반환합니다. 여전히 그것을 호출해야합니다. 또한 문자열 대신 함수 자체를 전달해야합니다. –

+1

네가 맞아, 고마워! 이런 ... 제 코드를 수정했습니다. –

0

나는 u는 다음과 같이 사용할 수 있다고 생각 :

function otherfunction(obj) { 
    var inputID = $(obj).attr("id"); 
    alert(inputID); } 


$(".formelement").blur(function() { 

otherfunction($(this)); 

}); 
관련 문제