2011-01-12 22 views
4

私のスクリプトには少し問題があります。jQuery select、.change and .click

目的:私はselectにいくつかのオプションがあり、値 '4'のオプションを選択すると選択が削除され、ここでは入力[タイプ=テキスト]と単語 "削除"をスパンタグに挿入する必要があります。あなたは、このスパンでクリックすると、今、以前に挿入入力し、スパンが削除されますと、この場所で、私はそれをして、フォーム内で、ここで

:-)私の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]'); 
    }); 
      } 
     }); 
    } 

} 

そして今はほとんど何もかもが動作します。私は値4のオプションを選択すると、選択と削除の入力とスパンが表示されます。このスパンでクリックすると、選択が再び表示され、入力とスパンが削除されます。 しかし、値4の選択オプションで再び選択すると、何も起こりません。そして、私は再びそれをしたい - 選択を削除入力とスパンなど...

私はネイティブスピーカーではありません。

答えて

2

ここで.live()を使用する必要があります。

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

や '$(ドキュメント).ready(関数(){...})内でそれをラップ;' –

+0

はどうもありがとうございました! – Qrczak

9

jQuery 1.7以降、.live()メソッドは推奨されていません。イベントハンドラを添付するには.on()を使用してください。古いバージョンのjQueryを使用する場合はを.live()より優先して使用する必要があります。

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

+4

これは他の答えに対するコメントでなければなりません。それ自体は完全な答えではありません。 – Blazemonger