Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JQuery - kolejna prośba o pomoc

2 views
Skip to first unread message

S

unread,
Mar 21, 2012, 1:21:13 PM3/21/12
to
Witam

Borykam się z tym JQ (wcześniej ograniczało się to do bardzo prostych
rzeczy) i strasznie się motam. Mam nadzieję, że szanowni Grupowicze wybaczą
mi kolejne pytanie.
Zrobiłem sobie powielanie rekordów tabeli z elementami formularza i mam
teraz problem z dodawaniem i usuwaniem w pewnym szczególnym przypadku.
Chodzi o to, że jeśli najpierw usunę bazowy rekord z którego robię .clone()
to nie mogę siłą rzeczy później już nic dodać. Wydawało mi się, ze
rozwiązałem problem (poniżej kod) ale w tej chwili mam tak, że jak kliknę to
mi klonuje więcej niż jeden rekord. Jak zrobić aby clone zrobiło swoje tylko
na jednym elemencie a nie na wszystkich o danym identyfikatorze?
A o to kod:
Tu robię clone i po prostu sprawdzam czy ten bazowy rekord jest widoczny czy
nie. Jeśli nie to biorę z tych wcześniej skopiowanych (pewnie nakombinowałem
niemiłosiernie)

$('#add_koszt_transportu_next').click(function(){
var myEl = $('#koszt_dostawy_table
tr').clone().appendTo('#koszt_dostawy_table2');
myEl.find('input[type=text]').val('');

if($('#koszt_dostawy_table .row_koszt_transportu').is(':visible')) {
else {
var myEl2 = $('#koszt_dostawy_table2
tr').clone().appendTo('#koszt_dostawy_table2');
myEl2.find('input[type=text]').val('');
}

});'

A tu kod odpowiedzialny za usuwanie

$('.unset_koszt_transportu').click(function(){
$(this).parents('.row_koszt_transportu').hide();
if($(this).parents('.row_koszt_transportu').is(':visible') ) {
$("#add_koszt_transportu_next").hide('slow');
}
return false;
});
$('.unset_koszt_transportu').live('click',function(){

$(this).parents('.row_koszt_transportu').remove();

return false;
});

z góry dziękuję za pomoc i pozdrawiam
Sławek

S

unread,
Mar 21, 2012, 1:58:11 PM3/21/12
to
Pewnie na okrętkę ale poradziłem sobie tak:
$('#add_koszt_transportu_next').click(function(){

var myEl = $('#koszt_dostawy_table
tr').clone().appendTo('#koszt_dostawy_table2');
myEl.find('input[type=text]').val('');

if($('#koszt_dostawy_table .row_koszt_transportu').is(':visible')) {

}else {
$("#koszt_dostawy_table .row_koszt_transportu").show();
var myEl = $('#koszt_dostawy_table
tr').clone().appendTo('#koszt_dostawy_table2');
myEl.find('input[type=text]').val('');
$("#koszt_dostawy_table .row_koszt_transportu").hide();

}

Mam jednak wrażenie że to dość prostackie rozwiązanie więc jeśli jakaś dobra
dusza podpowie coś bardziej eleganckiego to będę wdzięczny.

pozdrawiam
Sławek

Herr

unread,
Mar 21, 2012, 3:56:03 PM3/21/12
to
S wrote:

> Witam
>
> Borykam się z tym JQ (wcześniej ograniczało się to do bardzo prostych
> rzeczy) i strasznie się motam. Mam nadzieję, że szanowni Grupowicze wybaczą
> mi kolejne pytanie.
> Zrobiłem sobie powielanie rekordów tabeli z elementami formularza i mam
> teraz problem z dodawaniem i usuwaniem w pewnym szczególnym przypadku.
> Chodzi o to, że jeśli najpierw usunę bazowy rekord z którego robię .clone()
> to nie mogę siłą rzeczy później już nic dodać. Wydawało mi się, ze
> rozwiązałem problem (poniżej kod) ale w tej chwili mam tak, że jak kliknę to
> mi klonuje więcej niż jeden rekord. Jak zrobić aby clone zrobiło swoje tylko
> na jednym elemencie a nie na wszystkich o danym identyfikatorze?
> A o to kod:
> Tu robię clone i po prostu sprawdzam czy ten bazowy rekord jest widoczny czy
> nie. Jeśli nie to biorę z tych wcześniej skopiowanych (pewnie nakombinowałem
> niemiłosiernie)

[rachu ciachu]
> var myEl2 = $('#koszt_dostawy_table2 > tr').clone().appendTo('#koszt_dostawy_table2');

Pobierasz *wszystkie* rzędy tabelki z #koszt_dostawy_table2, klonujesz
je i dodajesz do tabelki. Ilość rzędów w tabelce rośnie coraz
szybciej...

Zamień selektor dla źródła na taki:
#koszt_dostawy_table2 > tr:last-child
powinno pomóc.


--
Herr C(...)a
mój e-mail? http://cerbermail.com/?YWDqT8olYO

S

unread,
Mar 21, 2012, 4:44:28 PM3/21/12
to

>[rachu ciachu]
> var myEl2 = $('#koszt_dostawy_table2 >
> tr').clone().appendTo('#koszt_dostawy_table2');

>Pobierasz *wszystkie* rzędy tabelki z #koszt_dostawy_table2, klonujesz
>je i dodajesz do tabelki. Ilość rzędów w tabelce rośnie coraz
>szybciej...

>Zamień selektor dla źródła na taki:
>#koszt_dostawy_table2 > tr:last-child
>powinno pomóc.

Faktycznie też działa, wielkie dzięki.

pozdrawiam
Sławek

0 new messages