2

次の問題を解決するには、Javascript/jQueryの専門家の助けが必要です。

---- 1.このJavascriptは、selecthtmlタグで選択されたオプションのIDを警告します。

$(function(){
    $("#id_productos_list").change(
    function(){
        var op = $(this).selectedValues()
        alert(op);
     }
     );
});

----2。このJavascriptクローンhtmlコード:

function cloneMore(selector, type) {
    var newElement = $(selector).clone();
    var total = $('#id_' + type + '-TOTAL_FORMS').val();
    
    newElement.find(':input').each(function() {
        var name = $(this).attr('name').replace('-' + (total-1) + '-','-' + total + '-');
        var id = 'id_' + name;
        $(this).attr({'name': name, 'id': id}).val('').removeAttr('checked');
    });
    newElement.find('label').each(function() {
        var newFor = $(this).attr('for').replace('-' + (total-1) + '-','-' + total + '-');
        $(this).attr('for', newFor);
    });

    total++;
    $('#id_' + type + '-TOTAL_FORMS').val(total);
    $(selector).after(newElement);
}

----これはJSが複製しているHTMLコードの一部であり、問​​題なく動作します

            <select id="id_productos_list" name="productos_list" >
              <option value="1">One</option>
              <option value="2">Two</option>
            </select>

ただし、Javascript#1だけが最初のhtmlコード(クローンの元のコード)で機能します。複製された他のユーザーは、選択したオプションを警告しません。複製された選択タグごとに異なるIDの属性を使用してテストしましたが、結果はありません。

私は何が欠けていますか?FirebugはクローンされたhtmlDOMを表示しますnice:Sクローンを作成した後、動作させるためにDOMを更新する必要があり$("#id productos list").change(...)ますか?

4

2 に答える 2

6

.clone(true)アタッチされているすべてのハンドラーのクローンを試しましたか?クローンドキュメントの下部に説明されています。

于 2009-09-16T01:02:59.280 に答える
5

jQuery$("#...")構文は、最初に一致した要素を正確なIDで返します。要素のクローンを作成しているが、IDで区別していない場合、このコードは期待どおりに機能しません。

次の2つの式の違いを比較できます。

alert($("#id_productos_list").size());

...と

alert($("[id='#id_productos_list']").size());

最初の式は、ページ内にIDが「id_productos_list」の要素が存在するかどうかに応じて、0または1を返します。宣言された順序の最初の要素が優先されます。

2番目の式は、ページ内のIDが「id_productos_list」のすべての要素のセットに応じて、0または1つ以上を返します。

clone()また、操作の一部としてイベントハンドラーがコピーされていないように見えることにも注意してください。これらのハンドラーを新しい要素に再割り当てする必要がある場合があります。

var newElement = $(selector).clone(true);
于 2009-09-16T00:35:43.837 に答える