0

ボタンをクリックするだけで以下を Web フォームに追加する JS があります。div.removeをクリックすると、最も近いnew-attributediv が削除されます。それは正常に動作します。

<div class="new-attribute">
    <h3>New Attribute</h3>

    <label for="attributeName3">Name:</label>
    <input class"attribute"="" type="text" name="attributeName3">

    <label for="attributeType3">Type:</label>
    <select id="t" class="attribute" name="attributeType3">
        <option value="text" selected="">Text</option>
        <option value="checkbox">Checkbox</option>
        <option value="select-list">Select Option List</option>
        <option value="notes">Notes</option>
    </select>

    <div class="option"></div>
    <div class="remove">Delete</div>
</div>

divの「オプション」には、選択入力の「選択リスト」の選択に別のフォームフィールドを追加するコードがあります。それは動作しません。何故かはわからない。変数名が衝突していません。私は不在です。select に id を与えるべきではありません。なぜなら、それは再発するからです。準拠させる前に、それを機能させたいだけです。

私が問題を抱えているJは次のとおりです。

//select temp
var select="<div class=\"new-option\">"
    + "<h3>new option</h3>"
    + "<label for=\"attributeName"+count+"\">New otion:</label>"
    + "<input class\"attribute\" type=\"text\" name=\"attributeName"+count+"\">"
    + "</div>";

//get value of select
$('#t').change(function() {
    var selectVal = $('#t :selected').val();
    if (selectVal == "select-list") {
        $(this).closest('.option').append(select);
    }   
});

コードは動作し$(select).appendTo('.option'); ますが、ページ上の「オプション」クラスのすべてのインスタンスにコードを追加します。現在または最も近いものに追加するだけです。

前もって感謝します

4

3 に答える 3

3

問題はclosest()、セレクターに一致する最も近い親要素の DOM を検索するため.optionですが、の兄弟です#tnext()代わりに使用してみてください:

$('#t').change(function() {
    if ($(this).val() == "select-list") {
        $(this).next('.option').append(select);
    }   
});
于 2013-08-31T13:57:24.707 に答える
0

順序を変更すると失敗する可能性があるため、next、prev の使用は避けてください。代わりに、コード内で最も近いものではなく兄弟を使用してみてください。

$(this).siblings('.option').append(select);

詳細については、http: //api.jquery.com/siblings/をご覧ください。

于 2013-08-31T13:57:25.427 に答える
0

これを試して

http://jsfiddle.net/7WC4G/1/

$('#bob').change(function(){
    $('#nuform').append('<p>your new form here</p>');
});
于 2013-08-31T13:55:09.597 に答える