선택한 옵션에 따라 인스턴스 메서드를 호출하는 방법은 무엇입니까?

엔티티 블랙

이 코드를 만들었지 만 완료하는 방법을 모르겠습니다. 나는 개체가 ContactDetail있습니다. 또한 하나의 프로토 타입 메서드가 doSomething있습니다. ContactDetail인스턴스에는 optionElhtml 옵션 요소 인 속성 이 있습니다. 몇 가지 인스턴스를 만들고 선택할 옵션을 추가했습니다. 이제 선택에서 값을 선택하면 선택에 doSomething따라 메소드 를 호출하고 싶습니다 . 나는 HTML 변경 (ID 선언 없음)없이 일부 솔루션을하고 싶습니다. 또한 순수한 자바 스크립트 (jquery 데이터 없음)로 솔루션을 고맙게 생각합니다. 나는 이것을 스스로 코딩 할 것이지만 지금은 아이디어가 없습니다. 그래서 나는 당신에게 도움을 요청합니다.

EDIT1 : 때로는 옵션이 분리되거나 추가되어 다시 선택하기 때문에 색인이 작동하지 않습니다.

EDIT2 : 내 예제를 수정해야 했으므로 더 잘 이해할 수 있습니다.

다음은 jsfiddle입니다 : http://jsfiddle.net/kkha3/

var selectDetail = $("<select />");

var ContactDetail = function(name) {
    this.name = name;    
    this.optionEl = $("<option/>").text(this.name); 
    // there are like 5 more properties
}

ContactDetail.prototype.doSomething = function() {
    console.log(this.name); // this is just a debug, that proves in example
                            // that correct instance was called, but there is no
                            // such a thing in fact
    // here I call some more things based choice
    // for example if you select contact detail address, 
    // then it puts into form more inputs (like ZIP, state, street..
}

var contactDetailList = [];
contactDetailList.push(new ContactDetail("a"));
contactDetailList.push(new ContactDetail("b"));
contactDetailList.push(new ContactDetail("c"));
contactDetailList.push(new ContactDetail("d"));
contactDetailList.push(new ContactDetail("e"));
contactDetailList.push(new ContactDetail("f"));


for (var i = 0; i < contactDetailList.length; i++) {
    contactDetailList[i].optionEl.appendTo(selectDetail);
}

selectDetail.change(function(event) {
   // how to call doSomething() on instance that is selected??
});

selectDetail.appendTo("body");
낡은

아마도 jQuery의 data () 기능으로 무언가를 할 수있을 것입니다. ContactDetail옵션 요소에 연결되도록 "클래스"를 약간 수정합니다 .

var ContactDetail = function(name) {
    this.name = name;    
    this.optionEl = $("<option/>").text(this.name);
    // attach this ContactDetail to the option
    this.optionEl.data('contact-detail', this);
}

그런 다음 나중에 변경 처리기에서 선택한 옵션 요소를 가져오고 여기에서 ContactDetail클래스 의 인스턴스를 검색 할 수 있습니다 .

select.change(function(event) {
   var contactDetail = $('option:selected', this).data('contact-detail');
   if (contactDetail)
       contactDetail.doSomething();
});

이렇게하면 목록을 작성하는 데 사용한 전역 배열에서 완전히 자유 로워집니다.

jsFiddle 데모

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

인스턴스 상태에 따라 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

선택한 옵션에 따라 텍스트를 변경하는 방법은 무엇입니까?

분류에서Dev

드롭 다운에서 선택한 옵션에 따라 텍스트 필드를 숨기거나 표시하는 방법은 무엇입니까?

분류에서Dev

(자바 스크립트) 드롭 다운 목록에서 선택한 옵션에 따라 변수 값을 변경하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트의 체크 박스 선택에 따라 드롭 다운 옵션을 변경하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트의 체크 박스 선택에 따라 드롭 다운 옵션을 변경하는 방법은 무엇입니까?

분류에서Dev

최종 주입 체인 대상에 따라 인스턴스를 주입하는 방법은 무엇입니까?

분류에서Dev

JAVASCRIPT / BOOTSTRAP- 첫 번째 선택 옵션에 따라 다른 선택에서 옵션을 자동 선택하는 방법은 무엇입니까?

분류에서Dev

Knockout JS Array Map을 사용하여 입력 조건에 따라 선택 옵션 바인딩을 기본값으로 만드는 방법은 무엇입니까?

분류에서Dev

Swift-특정 인스턴스에서 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

드롭 다운 목록에 대해 선택한 옵션에 따라 특정 페이지로 리디렉션하는 방법은 무엇입니까?

분류에서Dev

여러 인스턴스 변수와 메서드를 함수에 호출하는 방법은 무엇입니까?

분류에서Dev

'클래스 선택'태그에서 옵션을 선택한 후에 만 입력 옵션을 표시하는 방법은 무엇입니까?

분류에서Dev

Django 관리자에서 다른 선택 태그의 옵션에 따라 선택 태그 옵션을 변경하는 방법은 무엇입니까?

분류에서Dev

Django 관리자에서 다른 선택 태그의 옵션에 따라 선택 태그 옵션을 변경하는 방법은 무엇입니까?

분류에서Dev

Python을 사용하여 Selenium에서 선택한 텍스트 옵션을 얻는 방법은 무엇입니까?

분류에서Dev

android studio에서 스피너 선택에 따라 imageview보기를 변경하는 방법은 무엇입니까?

분류에서Dev

선택한 다른 <선택> 옵션에 따라 <선택> 옵션을 비활성화하는 방법은 무엇입니까?

분류에서Dev

선택한 옵션에 따라 값을 변경하는 방법은 무엇입니까?

분류에서Dev

sweetalert에서 두 가지 옵션을 선택하고 해당 옵션에 따라 조치를 취하는 방법은 무엇입니까?

분류에서Dev

그에 따라 스크롤에서 점선 SVG 애니메이션을 얻는 방법은 무엇입니까?

분류에서Dev

그에 따라 스크롤에서 점선 SVG 애니메이션을 얻는 방법은 무엇입니까?

분류에서Dev

백그라운드 작업에서 IHttpContextAccessor 인스턴스 (또는 이와 동등한 인스턴스)를 얻는 방법은 무엇입니까?

분류에서Dev

Google 스크립트에서 선택한 옵션을 얻는 방법은 무엇입니까?

분류에서Dev

드롭리스트의 선택에 따라 기능을 실행하는 방법은 무엇입니까?

분류에서Dev

스피너 선택에 따라 edittext에서 값을 설정하는 방법은 무엇입니까?

분류에서Dev

프라임 페이스에서 필드 셋을 클릭 한 후 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

설치된 패키지 선택을 한 Fedora 인스턴스에서 다른 인스턴스로 복제하는 방법은 무엇입니까?

분류에서Dev

C ++에서 클래스를 인스턴스화하는 가장 선호되는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    인스턴스 상태에 따라 메서드를 호출하는 방법은 무엇입니까?

  2. 2

    선택한 옵션에 따라 텍스트를 변경하는 방법은 무엇입니까?

  3. 3

    드롭 다운에서 선택한 옵션에 따라 텍스트 필드를 숨기거나 표시하는 방법은 무엇입니까?

  4. 4

    (자바 스크립트) 드롭 다운 목록에서 선택한 옵션에 따라 변수 값을 변경하는 방법은 무엇입니까?

  5. 5

    자바 스크립트의 체크 박스 선택에 따라 드롭 다운 옵션을 변경하는 방법은 무엇입니까?

  6. 6

    자바 스크립트의 체크 박스 선택에 따라 드롭 다운 옵션을 변경하는 방법은 무엇입니까?

  7. 7

    최종 주입 체인 대상에 따라 인스턴스를 주입하는 방법은 무엇입니까?

  8. 8

    JAVASCRIPT / BOOTSTRAP- 첫 번째 선택 옵션에 따라 다른 선택에서 옵션을 자동 선택하는 방법은 무엇입니까?

  9. 9

    Knockout JS Array Map을 사용하여 입력 조건에 따라 선택 옵션 바인딩을 기본값으로 만드는 방법은 무엇입니까?

  10. 10

    Swift-특정 인스턴스에서 메서드를 호출하는 방법은 무엇입니까?

  11. 11

    드롭 다운 목록에 대해 선택한 옵션에 따라 특정 페이지로 리디렉션하는 방법은 무엇입니까?

  12. 12

    여러 인스턴스 변수와 메서드를 함수에 호출하는 방법은 무엇입니까?

  13. 13

    '클래스 선택'태그에서 옵션을 선택한 후에 만 입력 옵션을 표시하는 방법은 무엇입니까?

  14. 14

    Django 관리자에서 다른 선택 태그의 옵션에 따라 선택 태그 옵션을 변경하는 방법은 무엇입니까?

  15. 15

    Django 관리자에서 다른 선택 태그의 옵션에 따라 선택 태그 옵션을 변경하는 방법은 무엇입니까?

  16. 16

    Python을 사용하여 Selenium에서 선택한 텍스트 옵션을 얻는 방법은 무엇입니까?

  17. 17

    android studio에서 스피너 선택에 따라 imageview보기를 변경하는 방법은 무엇입니까?

  18. 18

    선택한 다른 <선택> 옵션에 따라 <선택> 옵션을 비활성화하는 방법은 무엇입니까?

  19. 19

    선택한 옵션에 따라 값을 변경하는 방법은 무엇입니까?

  20. 20

    sweetalert에서 두 가지 옵션을 선택하고 해당 옵션에 따라 조치를 취하는 방법은 무엇입니까?

  21. 21

    그에 따라 스크롤에서 점선 SVG 애니메이션을 얻는 방법은 무엇입니까?

  22. 22

    그에 따라 스크롤에서 점선 SVG 애니메이션을 얻는 방법은 무엇입니까?

  23. 23

    백그라운드 작업에서 IHttpContextAccessor 인스턴스 (또는 이와 동등한 인스턴스)를 얻는 방법은 무엇입니까?

  24. 24

    Google 스크립트에서 선택한 옵션을 얻는 방법은 무엇입니까?

  25. 25

    드롭리스트의 선택에 따라 기능을 실행하는 방법은 무엇입니까?

  26. 26

    스피너 선택에 따라 edittext에서 값을 설정하는 방법은 무엇입니까?

  27. 27

    프라임 페이스에서 필드 셋을 클릭 한 후 메서드를 호출하는 방법은 무엇입니까?

  28. 28

    설치된 패키지 선택을 한 Fedora 인스턴스에서 다른 인스턴스로 복제하는 방법은 무엇입니까?

  29. 29

    C ++에서 클래스를 인스턴스화하는 가장 선호되는 방법은 무엇입니까?

뜨겁다태그

보관