2011-04-07 4 views
3

나는 이것을 할 수있는 방법에 대한 논리와 이해가 필요합니다. jquery dynamic function

문제 : I가 foo는/표시 줄에 전달할 수있는 방법

$(document).ready(function() {   
    function foo() { 
     $("#foo_elem").toggle(true).attr('required', true); 
     alert('This is foo'); 
    } 

    function bar() { 
     $("#bar_elem").toggle(true).attr('required', true); 
     alert('This is bar'); 
    } 
}); 

:

나는 매우 유사한 몇 가지 기능을 가지고 있지만 만들려는/동적

예를 호출 함수를 만드시겠습니까? 의사 코드

$(document).ready(function() { 
    // would pass foo/bar to this?   
    $($x)(function() { 
     $("#"+$(this)+"_elem").toggle(true).attr('required', true); 
     alert('This is '+$(this)); 
    }); 
}); 
+1

예를 들어 문제의 범위를 다루지는 않지만 인수가있는 메서드 하나만 사용할 수는 없습니까? –

답변

9

동적으로 foo 또는 bar를 호출 하시겠습니까?

function callMethod(method) 
{ 
    method(); 
} 

callMethod(foo); // foo is the symbol for your method 
callMethod(bar); // etc 

높은 수준.

function callMethod(elementPrefix) 
{ 
    $('#' + elementPrefix+ '_elem').toggle(true).attr('required', true); 
    alert('This is ' + elementPrefix); 
} 

당신이 문자열 값으로 모두를 사용하려는 경우와 메소드 이름, 당신이 평가 후면 수 있습니다 : 귀하의 경우에, 그러나, 당신은 당신의 선택에 그냥 변수로 그 기호를 사용하도록 요청하고 기호를 사용하여 메서드를 가져 오십시오.

var methodName = 'foo'; 
var text = 'This is ' + methodName; // This is foo 
var method = eval('(' + methodName + ')'); 
method(); // calls foo() 
4

귀하의 질문을 완전히 이해했는지 확신 할 수 없지만 일부 인수를 기반으로 함수를 동적으로 만들고 싶습니까? 그렇다면, 당신은 이런 식으로 뭔가를 할 수 :

function make_func(x) { 
    return function() { 
    $("#"+x+"_elem").toggle(true).attr('required', true); 
    alert('This is '+x); 
    }; 
} 

그런 다음 make_func('foo')은 원래의 예에서 함수 foo에 해당하는 기능을 반환합니다.