基于jquery的合并table相同单元格的插件(精简版)_jquery
效果如下
原表格:
col0 | col1 | col2 | col3 |
SuZhou | 11111 | 22222 | SuZhouCity |
SuZhou | 33333 | 44444 | SuZhouCity |
SuZhou | 55555 | 66666 | SuZhouCity |
ShangHai | 77777 | 88888 | ShangHaiCity |
ShangHai | uuuuu | hhhhh | ShangHaiCity |
ShangHai | ggggg | ccccc | ShangHaiCity |
GuangZhou | ttttt | eeeee | GuangZhouCity |
GuangZhou | ppppp | qqqqq | GuangZhouCity |
处理之后的样子:
col0 | col1 | col2 | col3 |
SuZhou | 11111 | 22222 | SuZhouCity |
33333 | 44444 | ||
55555 | 66666 | ||
ShangHai | 77777 | 88888 | ShangHaiCity |
uuuuu | hhhhh | ||
ggggg | ccccc | ||
GuangZhou | ttttt | eeeee | GuangZhouCity |
ppppp | qqqqq |
效果出来, 看上去比较简单, 下面先看下页面
col0 | col1 | col2 | col3 |
SuZhou | 11111 | 22222 | SuZhouCity |
SuZhou | 33333 | 44444 | SuZhouCity |
SuZhou | 55555 | 66666 | SuZhouCity |
ShangHai | 77777 | 88888 | ShangHaiCity |
ShangHai | uuuuu | hhhhh | ShangHaiCity |
ShangHai | ggggg | ccccc | ShangHaiCity |
GuangZhou | ttttt | eeeee | GuangZhouCity |
GuangZhou | ppppp | qqqqq | GuangZhouCity |
核心代码:
// 这里写成了一个jquery插件的形式
$('#process').mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
// 然后根据指定列来处理(合并)相同内容单元格
cols: [0, 3]
});
下面看看这个小插件的完整代码:
;(function($) {
// 看过jquery源码就可以发现$.fn就是$.prototype, 只是为了兼容早期版本的插件
// 才保留了jQuery.prototype这个形式
$.fn.mergeCell = function(options) {
return this.each(function() {
var cols = options.cols;
for ( var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
// 如果对javascript的closure和scope概念比较清楚, 这是个插件内部使用的private方法
// 具体可以参考本人前一篇随笔里介绍的那本书
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 我们对每一行数据进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function(index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
})(jQuery);
主要的说明在注释里应该都有了, 代码的确比较简单, 像有些地方还值得改进
•处理的table内容是从tbody开始查找的, 如果没有tbody, 那应该给出个更通用化的方案
•for ( var i = cols.length - 1; cols[i] != undefined; i--)...如果表格数据量大, 处理的列也比较多, 这里不进行优化会有造成浏览器线程阻塞的风险, 可以考虑用setTimeout
•其他什么值得改进的, 我想应该会不少的

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Gunakan Alat Penyemakan Ralat Salah satu cara terpantas untuk mencari ralat dengan hamparan Excel anda ialah menggunakan alat semakan ralat. Jika alat itu menemui sebarang ralat, anda boleh membetulkannya dan cuba menyimpan fail itu sekali lagi. Walau bagaimanapun, alat ini mungkin tidak menemui semua jenis ralat. Jika alat semakan ralat tidak menemui sebarang ralat atau membetulkannya tidak menyelesaikan masalah, maka anda perlu mencuba salah satu pembetulan lain di bawah. Untuk menggunakan alat semakan ralat dalam Excel: pilih tab Rumus. Klik alat Semak Ralat. Apabila ralat ditemui, maklumat tentang punca ralat akan muncul dalam alat. Jika ia tidak diperlukan, betulkan ralat atau padamkan formula yang menyebabkan masalah. Dalam Alat Semak Ralat, klik Seterusnya untuk melihat ralat seterusnya dan ulangi proses tersebut. Apabila tidak

Cara Menetapkan Kawasan Cetakan GoogleSheets dalam Pratonton Cetak Helaian Google membolehkan anda mencetak hamparan dengan tiga kawasan cetakan berbeza. Anda boleh memilih untuk mencetak keseluruhan hamparan, termasuk setiap lembaran kerja individu yang anda buat. Sebagai alternatif, anda boleh memilih untuk mencetak satu lembaran kerja. Akhir sekali, anda hanya boleh mencetak sebahagian daripada sel yang anda pilih. Ini ialah kawasan cetakan terkecil yang boleh anda buat kerana anda secara teori boleh memilih sel individu untuk dicetak. Cara paling mudah untuk menyediakannya ialah menggunakan menu pratonton cetakan Helaian Google terbina dalam. Anda boleh melihat kandungan ini menggunakan Helaian Google dalam penyemak imbas web pada PC, Mac atau Chromebook anda. Untuk menyediakan Google

Ia biasanya perlu untuk memasukkan dokumen PDF ke dalam lembaran kerja Excel. Sama seperti senarai projek syarikat, kami boleh menambahkan data teks dan aksara pada sel Excel dengan serta-merta. Tetapi bagaimana jika anda ingin melampirkan reka bentuk penyelesaian untuk projek tertentu pada baris data yang sepadan? Nah, orang sering berhenti dan berfikir. Kadang-kadang berfikir juga tidak berfungsi kerana penyelesaiannya tidak mudah. Gali lebih dalam artikel ini untuk mengetahui cara memasukkan berbilang dokumen PDF dengan mudah ke dalam lembaran kerja Excel, bersama-sama dengan baris data yang sangat khusus. Contoh Senario Dalam contoh yang ditunjukkan dalam artikel ini, kami mempunyai lajur yang dipanggil ProductCategory yang menyenaraikan nama projek dalam setiap sel. Satu lagi lajur ProductSpeci

Penyelesaian kepada masalah bahawa terdapat terlalu banyak format sel yang berbeza yang tidak boleh disalin: 1. Buka dokumen EXCEL, dan kemudian masukkan kandungan format yang berbeza dalam beberapa sel 2. Cari butang "Pelukis Format" di sudut kiri atas halaman Excel, dan kemudian klik pilihan " "Pelukis Format"; 3. Klik butang kiri tetikus untuk menetapkan format supaya konsisten.

Pada nilai berangka, pada rentetan teks, menggunakan koma di tempat yang salah benar-benar boleh menjengkelkan, walaupun untuk geeks Excel terbesar. Anda mungkin tahu cara menghilangkan koma, tetapi kaedah yang anda tahu mungkin memakan masa untuk anda. Baiklah, tidak kira apa masalah anda, jika ia berkaitan dengan koma di tempat yang salah dalam lembaran kerja Excel anda, kami boleh memberitahu anda satu perkara, semua masalah anda akan diselesaikan hari ini, di sini! Gali lebih dalam artikel ini untuk mengetahui cara mengalih keluar koma dengan mudah daripada nombor dan nilai teks dalam langkah paling mudah yang mungkin. Harap anda seronok membaca. Oh, dan jangan lupa beritahu kami kaedah mana yang paling menarik perhatian anda! Bahagian 1: Cara Mengalih Keluar Koma daripada Nilai Berangka Apabila nilai berangka mengandungi koma, terdapat dua situasi yang mungkin:

Cara Mencari Sel Bercantum dalam Excel pada Windows Sebelum anda boleh memadamkan sel bercantum daripada data anda, anda perlu mencari kesemuanya. Sangat mudah untuk melakukan ini menggunakan alat Cari dan Ganti Excel. Cari sel bercantum dalam Excel: Serlahkan sel di mana anda ingin mencari sel bercantum. Untuk memilih semua sel, klik dalam ruang kosong di sudut kiri atas hamparan atau tekan Ctrl+A. Klik tab Laman Utama. Klik ikon Cari dan Pilih. Pilih Cari. Klik butang Pilihan. Pada penghujung tetapan FindWhat, klik Format. Di bawah tab Penjajaran, klik Gabungkan Sel. Ia harus mengandungi tanda semak dan bukannya garisan. Klik OK untuk mengesahkan format

Cara menggunakan RANDBETWEEN untuk menjana nombor rawak dalam Excel Jika anda ingin menjana nombor rawak dalam julat tertentu, fungsi RANDBETWEEN ialah cara yang cepat dan mudah untuk melakukannya. Ini membolehkan anda menjana integer rawak antara mana-mana dua nilai pilihan anda. Jana nombor rawak dalam Excel menggunakan RANDBETWEEN: Klik sel yang anda mahu nombor rawak pertama muncul. Taip =RANDBETWEEN(1,500) menggantikan "1" dengan nombor rawak terendah yang anda ingin hasilkan dan "500" dengan

Adakah mengecewakan untuk mengalih keluar sifar utama secara automatik daripada buku kerja Excel? Apabila anda memasukkan nombor ke dalam sel, Excel selalunya mengalih keluar sifar pendahuluan di hadapan nombor itu. Secara lalai, ia menganggap entri sel yang tidak mempunyai pemformatan eksplisit sebagai nilai berangka. Sifar pendahuluan biasanya dianggap tidak relevan dalam format nombor dan oleh itu ditinggalkan. Selain itu, sifar pendahuluan boleh menyebabkan masalah dalam operasi berangka tertentu. Oleh itu, sifar dikeluarkan secara automatik. Artikel ini akan mengajar anda cara mengekalkan sifar utama dalam Excel untuk memastikan data berangka yang dimasukkan seperti nombor akaun, poskod, nombor telefon, dsb. berada dalam format yang betul. Dalam Excel, bagaimana untuk membenarkan nombor mempunyai sifar di hadapannya? Anda boleh mengekalkan sifar nombor utama dalam buku kerja Excel, terdapat beberapa kaedah untuk dipilih. Anda boleh menetapkan sel dengan
