2011-01-12 7 views
4

내 스크립트에 약간의 문제가 있습니다.jQuery select, .change 및 .click

목표 : 몇 가지 옵션이있는 select이 있으며 '4'값을 가진 옵션을 선택하면 선택이 제거되고이 위치에서 span 태그에 input [type = text] 및 word "remove"를 삽입해야합니다. 이 범위에서 클릭 할 때 그리고 지금, 이전에 삽입 입력 및 스팬 제거하고이 자리에 내가 배치가 필요 내 이전을 선택 제거

나는 그것이 형태로 내부

여기

내 HTML 코드 :-) 이해가 희망

<label class="mandatory" for="ctrl_54">Title</label> 
<select class="select mandatory" id="ctrl_54" name="title"> 
    <option value="1">Books</option> 
    <option value="2">Movies</option> 
    <option value="3">Events</option> 
    <option value="4">other...</option> 
</select> 

내 JS : ID = F9

function be_forms() { 

    var myselect = $('form#f9 select#ctrl_54'); 

    if ($('form#f9').length) { 
     $('form#f9 select#ctrl_54').change(function() { 
      if ($(this).val() == 4) { 
       $('form#f9 select#ctrl_54').remove(); 
       $('<input type="text" value="" class="text innyinput mandatory" id="ctrl_54" name="title" /><span class="remove">remove</span>').insertAfter('form#f9 label[for=ctrl_54]'); 
       $("form#f9 span.remove").click(function(){ 
        $('form#f9 input#ctrl_54').remove(); 
        $('form#f9 span.remove').remove(); 
       $(myselect).insertAfter('form#f9 label[for=ctrl_54]'); 
    }); 
      } 
     }); 
    } 

} 

그리고 지금은 거의 everythings 작동합니다. 나는 값 4를 가진 옵션을 선택할 때 - 선택은 제거이고 입력과 스팬을 나타냅니다. 이 구간에서 클릭하면 선택이 다시 나타나며 입력 및 범위가 제거됩니다. 그러나 이제 값 4의 선택 옵션에서 다시 선택하면 아무 일도 일어나지 않습니다. 그리고 나는 그것을 다시하고 싶다 - 선택을 제거하고, 입력과 스팬을 삽입한다.

죄송하지만 제 영어를 모국어로 쓰지 않았습니다.

답변

2

여기서 .live()을 사용해야합니다.

$('#ctrl_54').live("change", function() { 
+1

또는 포장 그 안에'$ (문서) .ready (함수() {...});' –

+0

대단히 감사합니다! – Qrczak

9

jQuery 1.7부터 .live() 메소드는 더 이상 사용되지 않습니다. .on()을 사용하여 이벤트 처리기를 연결하십시오. 이전 버전의 jQuery 사용자는 .live()보다 우선하여 .delegate()을 사용해야합니다.

http://api.jquery.com/live/

+4

다른 답변에 대한 주석이어야합니다. 그 자체로 완전한 대답은 아닙니다. – Blazemonger