2012-03-30 4 views
0

연관 배열을 선택자와 값으로 구현할 수 있습니까?jquery의 선택자와 값으로 연관 배열

나는

var obj = { surgeon:1, asstSurgeon:2, anesthe:3, nurse:4, scrub:5,....... }; 

내가 이런 식으로 구현할 수 있어요 배열을 가지고있다.

$("#surgeon").click(function(){ 
    $("$hiddenvariable").val(1); 
}); 

$("#asstSurgeon").click(function(){ 
    $("$hiddenvariable").val(2); 
}); 

................, 

아무도 내가 코드를 줄일 수있는 방법을 알려주세요.

다른 방법으로 구현할 수 있습니까? jQuery를 $.each

$.each (obj, function(key, value) { 
    $("#" + key).click(function(){ 
     $("$hiddenvariable").val(value); 
    }); 
}); 

또는 for..in.on를 사용하여

답변

3

. (위의 방법이 아래보다 낫습니다.)

for (var i in obj) { 
    $("#" + i).on('click', {i: obj[i]}, function(e){ 
     $("$hiddenvariable").val(e.data.i); 
    }); 
} 
+1

그래서'i'는 전역이며 프로토 타입 속성을 필터링하고 싶지 않습니다. if (var_p in o) if (o.hasOwnProperty (p))'를 사용하십시오. –

+0

첫 번째 예는 작동하지 않습니다. 핸들러는 모두 동일한 'i' 변수를 참조합니다. 추가 한 두 번째 솔루션이 효과적입니다. –

+0

@ amnotiam aaww .. 나는 .. 내 잘못을 본다. 감사! –

2

어때요?

$.each(obj, function(type, i) { 
    $('#' + type).click(function() { $('#hiddenvariable').val(i); }); 
}); 
+1

아마도'$ ('#'+ type)'을 의미했을까요? –

+1

@amnotiam 그래, 고마워! – Niko

+0

고맙습니다 ...... ...... – Devswa

0

다음 JQuery와

$(".selector").click(function(e){ 
    $("#hiddenfield").val(Closure.object[e.id]); 
}); 

폐쇄 사용하는 자바 스크립트의 클로저 기능, 연관 버튼 IDS 당신의 폐쇄 변수 및 공통 선택 클래스를 ... 쓰기

function Closure() = {} 
Closure.object = { 
    surgeon:1, asstSurgeon:2, anesthe:3, nurse:4, scrub:5 
} 
+1

클래스를 선택하면 값을 찾기 위해 처리기의 요소 ID를 사용하는 것이 좋습니다. 하지만 왜 '클로저'라는 함수를 만들었습니까? ID/값지도가있는 Function 객체에만 속성을 할당하는 이유는 무엇입니까? 질문에서와 같이 평범한 물건을 사용하지 않는 이유는 무엇입니까? –

+0

일반 변수보다 클로저를 사용하는 것이 좋습니다 ... 개체처럼 사용할 수 있습니다 ... 동적 변수를 추가하고 ... 유효성 검사 ... 등 ... – Dasarp

+1

클로저가 아닌 것입니다. 가지고있는 것은 당신이 속성을 할당하는 Function 객체 일뿐입니다. 당신은 평범한 물건으로 똑같은 일을 할 수 있습니다. –