Mam div na mojej stronie, która zawiera tabelę z wejściami (z IDS), mam pewne warunki i funkcje na wejściach zapisanych w kodzie JavaScript. Próbuję zrobić, to zrobić przycisk (dodaj nowy), który ma dokładnie ten sam div na stronie, ale z tymi samymi warunkami i funkcjami na nowych elementach i przycisku Prześlij, aby pracować dla każdego oddzielnie.

Próbowałem tego:

$('#button-add').bind({  
    click: function()
    {
        $("#repeat").clone().appendTo("#add");
    }                
});

Problem polega na tym, że otrzymuję ten sam wygląd dla div, ale funkcje nie działają (ponieważ wejścia mają ten sam identyfikator) i nie mogę przesłać tylko tego bloku (nowy div).

Czy jest to prostszy sposób na to?

0
oday 12 sierpień 2014, 16:01

3 odpowiedzi

Najlepsza odpowiedź

Na wszelki wypadek, jeśli zignorujesz klony. Sposób, aby to zrobić za pomocą identyfikatora dynamicznego.

Powiedz, jeśli dołączanie div z różnym identyfikatorem dla każdego elementu za pomocą losowej funkcji w JavaScript.

   $('#add-item').on('click', function (e) {
                        var num = Math.floor(Math.random() * 90000) + 10000;
                        var numtd = Math.floor(Math.random() * 50000) + 10000;

                        $('<tr id="trowdynamic_' + num + '">' +
                            '<td>' +
                                '<div class="input-group">' +
                                '<input type="hidden" id="selected_item_' + numtd + '" name="selected_name" />' +
                                    '<input type="text" name="Inv_Itemsdetail" value="" class="Itemsdetail-typeahead_' + numtd + ' input-search" autocomplete="off" data-provide="typeahead" />' +
                                    '<input type="hidden" id="Inv_Itemsdetail_' + numtd + '" class="auto-complete" name="Itemxx[]" />' +
                                    '<span class="input-group-btn">' +
                                        '<a href="#" data-toggle="modal" class="btn btn-primary" data-target="#cardCode05"><i class="fa fa-plus"></i></a>' +

                                    '</span>' +
                                '</div>' +
                            '</td>' +'</tr>').appendTo('#yourcontainer_id');
});

Teraz używając jQuery wezwanie do tego samego elementów Teraz Uwaga W ten sposób mam każdy element zaczynając od tego samego id i numer losowy.

$('input[id^="selected_item_"]')
0
user3163213 12 sierpień 2014, 12:17

Ponieważ zamierzasz powielić div, nie powinieneś używać identyfikatorów, ponieważ ich wyjątkowość byłaby zagrożona. Ale możesz użyć nazw klasy CSS ($('.className')) lub niestandardowych atrybutów danych ($('[data-my-id=xxx]')), aby rozwiązać swoje wejścia, ponieważ nie muszą być unikalne.

Po drugie, musisz klonować swoje div, aby pojawiły się również zdarzenia dołączone do twoich wejść. Sprawdź jquery Doc dla {x0}} ( http://api.jquery.com/Clone/).

0
Christophe 12 sierpień 2014, 12:09

Ponieważ nowy div jest tworzony w nowej przestrzeni, tj. W #add wybierz nowy div jako

#add #repeat
{

}   //  in css

W jquery użyj next or siblings or children itp., aby wybrać nowy div

Na przykład

Zobacz bawi się

0
Deepu Sasidharan 12 sierpień 2014, 12:21