Seperti yang ditunjukkan dalam gambar:
1 Jadual di sebelah kiri ditambah secara dinamik dengan mengklik butang "Tambah" di atas. Klik pada baris jadual di sebelah kiri untuk membuat jadual di sebelah kanan (sebarang bilangan baris akan sesuai), dengan perhubungan satu-dengan-banyak di kiri dan kanan.
2 Apabila anda ingin menambah baris baharu di sebelah kiri, cipta objek bebas (bermaksud setiap baris sepadan dengan objek berbeza), kemudian klik Tambah di sebelah kanan, dan baris yang baru dibuat akan mempunyai beberapa menu lungsur. . Ya, selepas pengguna selesai memilih, dia akan mengklik untuk mula mengisi laporan Apabila dia mengklik butang mula mengisi laporan, dia perlu menyimpan data di sebelah kanan dan data di sebelah kiri ke dalam objek. baris di sebelah kiri. (Setiap baris di sebelah kiri sepadan dengan objek)
3 Terdapat butang 'Padam' di atas jadual kiri dan kanan Jika anda mengklik butang 'Padam' di sebelah kiri, objek storan dalam baris ini akan dipadamkan data yang sepadan dengannya di sebelah kanan tidak akan dipadamkan. Jika anda memilih baris di sebelah kanan dan klik 'Padam', maka hanya storan data baris ini di sebelah kanan akan dipadamkan dalam objek di sebelah kiri.
Kerangka:
Bootstrap jQuery terpakai
Kod:
<p class="col-md-5 clearfix">
<button class="button1">新增</button>
<button class="button1_del">删除</button>
<table border="1px solid #000" class="text-center">
<thead class="zType_thead text-center">
<tr>
<th></th>
<th>纳税人识别号</th>
<th>纳税人名称</th>
</tr>
</thead>
<tbody class="zType_tbody">
</tbody>
</table>
</p>
<p class="col-md-offset-1 col-md-5">
<button class="button2">新增</button>
<button class="button2_del">删除</button>
<button class="baocun_button" type="submit">开始填报</button>
<form class="clearfix" method="post">
<table class="zType_table text-center" border="1px solid #000">
<thead>
<tr class="zType_table_th">
<th>计算期类型</th>
<th>期间</th>
<th>征收方式</th>
</tr>
</thead>
<tbody class="zType_all">
</tbody>
</table>
</form>
</p>
Kod js:
//点击选中右侧表格的某一行
$('.zType_all').on('click','tr',function(){
//点击某一行 此行背景色改变,其他行恢复白色。点击的那一行添加了name属性,然后删除其他tr的name值,为的是之后联系起来,有个name属性作为桥梁,比如删除,就可以在删除掉对应带有name值的tr
$('.zType_all').children().css({"background":"#fff","color":"#000"}).removeAttr('name');
$(this).css({"background":"#bfaadc","color":"#000"});
if(!$(this).attr('name')){
$(this).attr("name",'zType_tr_checked1');
}
})
//右侧删除按钮 点击删除带有name的tr
$('.button2_del').on('click',function(){
$('tr[name=zType_tr_checked1]').remove();
})
//左侧添加按钮
$('.button1').on('click',function(){
$('.zType_tbody').append('<tr><td><span class="glyphicon glyphicon-chevron-right"></span></td><td><input type="text" name="shibiehao"></td><td><input type="text" name="mingcheng"></td></tr>');
})
//选中左侧表格的tr
$('.zType_tbody').on('click','tr',function(){
//依然还是点击某一行 此行背景色改变,其他行恢复白色。点击的那一行添加了name属性,然后删除其他tr的name值,为的是之后联系起来,有个name属性作为桥梁,比如删除,就可以在删除掉对应带有name值的tr
$('.zType_tbody').children().css({"background":"#fff"}).removeAttr('name');
$(this).css({"background":"#bfaadc"}).children().eq(0).children()
if(!$(this).attr('name')){
$(this).attr("name",'zType_tr_checked2');
}
})
//点击左侧删除按钮,删掉左侧选中的tr
$('.button1_del').on('click',function(){
$('tr[name=zType_tr_checked2]').remove();
})
Izinkan saya menerangkan secara ringkas pendapat saya: Setiap struktur DOM mengekalkan objek data, dengan mengandaikan struktur HTML anda ialah (sintaks emmet):
Kemudian:
Di atas terbahagi kepada tiga komponen
.app-test
Bertanggungjawab untuk mengekalkan semua data pembayar cukai (iaitu jadual di sebelah kiri);Semua tr pada kedua-dua belah boleh dianggap sebagai komponen kecil - burung pipit kecil tetapi mempunyai semua organ dalaman
diringkaskan sebagai:
;整个功能组件 > 左侧 tr 组件 + 右侧 tr 组件
Anda boleh memahaminya sebagai nilai lulus untuk komponen ibu bapa-anakPelaksanaan kasar adalah seperti berikut:
Pertama, kedua-dua jadual tergolong dalam modul berfungsi, dengan andaianKedua-dua TaxesReportTaxpayer dan TaxesReportReporter perlu lulus dalam contoh TaxesReport untuk kaedah atau data [komponen anak untuk memanggil komponen induk]
TaxesReport
Klik butang baharu di sebelah kiri untuk mencipta pembayar cukai baharu:
Tambahkan jenis laporan pembayar cukai di sebelah kanan, seperti:Apabila memadam, selain daripada memadamkan struktur tr yang sepadan dan memadamkan data yang sepadan dengan tr, dua objek data yang terlibat (
di sebelah kiri) mewujudkan parameter nilaiJana cache data dan simpan data dalam bentuk model kunci Terdapat kanak-kanak dalam model di sebelah kanan untuk menyimpan data yang sepadan di sebelah kanan
Apabila beralih ke kiri, cari model yang sepadan.kanak-kanak terus dari cache data model kunci dan lukis semula senarai di sebelah kanan
Apabila menambah atau memadam di sebelah kiri, cuma tambah dan padam daripada cache data model kunci
Begitu juga apabila menambah dan memadam di sebelah kanan Pada masa ini, anda boleh mencari model yang sepadan.kanak-kanak
Memandangkan jQuery digunakan, jQuery boleh melampirkan data ke DOM melalui
Tidak ada masalah sama ada untuk dilampirkan ia ke sebelah kanan atau tidakdata()
, jadi model kunci di atas boleh terus melampirkan setiap model ke DOM setiap baris (sebelah kiri) dalam bentukIni ideanya, boleh cuba tulis kod dulu