Rumah hujung hadapan web tutorial js 基于jquery的合并table相同单元格的插件(精简版)_jquery

基于jquery的合并table相同单元格的插件(精简版)_jquery

May 16, 2016 pm 06:08 PM
table sel

效果如下

原表格:

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
•其他什么值得改进的, 我想应该会不少的
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Excel menemui masalah dengan satu atau lebih rujukan formula: Cara membetulkannya Excel menemui masalah dengan satu atau lebih rujukan formula: Cara membetulkannya Apr 17, 2023 pm 06:58 PM

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

Bagaimana untuk menetapkan kawasan cetakan dalam Helaian Google? Bagaimana untuk menetapkan kawasan cetakan dalam Helaian Google? May 08, 2023 pm 01:28 PM

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

Bagaimana untuk membenamkan dokumen PDF dalam lembaran kerja Excel Bagaimana untuk membenamkan dokumen PDF dalam lembaran kerja Excel May 28, 2023 am 09:17 AM

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

Apakah yang perlu saya lakukan jika terdapat terlalu banyak format sel yang berbeza yang tidak boleh disalin? Apakah yang perlu saya lakukan jika terdapat terlalu banyak format sel yang berbeza yang tidak boleh disalin? Mar 02, 2023 pm 02:46 PM

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.

Bagaimana untuk mengalih keluar koma daripada nilai angka dan teks dalam Excel Bagaimana untuk mengalih keluar koma daripada nilai angka dan teks dalam Excel Apr 17, 2023 pm 09:01 PM

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:

Bagaimana untuk mencari dan memadam sel yang digabungkan dalam Excel Bagaimana untuk mencari dan memadam sel yang digabungkan dalam Excel Apr 20, 2023 pm 11:52 PM

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

Bagaimana untuk mencipta penjana nombor rawak dalam Excel Bagaimana untuk mencipta penjana nombor rawak dalam Excel Apr 14, 2023 am 09:46 AM

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

Bagaimana untuk menghalang Excel daripada mengalih keluar sifar utama Bagaimana untuk menghalang Excel daripada mengalih keluar sifar utama Feb 29, 2024 am 10:00 AM

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

See all articles