2016-11-07 9 views
0

同じIDを維持どのように私はそれをやっている:あなたが上で見るようスイッチ素子の種類が、私は要素を動的に入力し、以下で変更する必要が

$(function() { 
 
    $('.click_me').click(function(ev) { 
 
    var condition_value_1 = $('#condition_value_1'); 
 
    var select_html = '<select name="condition_value_1" id="condition_value_1"></select>'; 
 
    condition_value_1.after().html(select_html); 
 
    condition_value_1.remove(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
 
<input type="text" id="condition_value_1"> 
 
<span class="click_me">Click Me</span>
変更後

種類上記のスニペットは前の要素を削除する必要がありますが、同じIDを共有する(これは必須です)ので、新しいSELECTが削除されます。これを避ける方法はありますか?

+1

'彼らは同じIDを共有しています(これは必須です)。なぜそれは必須ですか?これはHTMLが無効で、 'id'属性を繰り返したときにJSで問題が発生します(あなたが発見したように)。代わりにそれぞれの 'input' /' select'を置き換えるべきです。 –

+0

@RoryMcCrossanいいえ、このアイデアはSELECTにINPUTをオンにし、値を変更すると、この作業を再度行うためにバックエンド側の多くのコードに変更が含まれる可能性があるため、問題は発生しません。 – ReynierPM

+1

名前の属性の代わりに –

答えて

5

置換したい場合は、replaceWithを使用することができます。..

$(function() { 
 
    $('.click_me').click(function(ev) { 
 
    var condition_value_1 = $('#condition_value_1'); 
 
    var select_html = '<select name="condition_value_1" id="condition_value_1"></select>'; 
 
    condition_value_1.replaceWith(select_html); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
 
<input type="text" id="condition_value_1"> 
 
<span class="click_me">Click Me</span>

+0

これはさらに良いです、ありがとう – ReynierPM

+0

はいあなたはそれに値する –

1

この意志という

$(function() { 
    $('.click_me').click(function(ev) { 
    var condition_value_1 = $('#condition_value_1'); 
    var select_html = '<select name="condition_value_1" id="condition_value_1"></select>'; 
    condition_value_1.after().html(select_html); 
    $('[name="ElementNameHere"]')[0].remove(); 
    }); 
}); 

ノートを削除して代わりにIDのname属性を使用しますDOMを検索するときに最初に入力したエントリのみを削除します。

関連する問題