回答編集履歴

3

sampe

2018/04/02 05:57

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -229,3 +229,9 @@
229
229
 
230
230
 
231
231
  ```
232
+
233
+
234
+
235
+ # sample
236
+
237
+ - [CodePen](https://codepen.io/yambejp/pen/wmjbWp)

2

追記

2018/04/02 05:57

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -119,3 +119,113 @@
119
119
  });
120
120
 
121
121
  ```
122
+
123
+
124
+
125
+ # 複数列
126
+
127
+ 複数列バージョンです
128
+
129
+
130
+
131
+ ```javacript
132
+
133
+ $(function(){
134
+
135
+ $('#t1 tbody td').filter(function(){
136
+
137
+ return $(this).closest('tr').find('td').index(this)==0;
138
+
139
+ }).on('click',function(){
140
+
141
+ var list=$(this).siblings('td').map(function(x){return {idx:x+1,num:parseInt($(this).text())}}).get();
142
+
143
+ list.sort(function(x,y){
144
+
145
+ if(x["num"]==y["num"]) return 0;
146
+
147
+ return x["num"]>y["num"]?1:-1;
148
+
149
+ });
150
+
151
+ $(this).closest('table').find('tr').each(function(){
152
+
153
+ var self=$(this);
154
+
155
+ list.forEach(function(x){
156
+
157
+ self.find('td,th').eq(x["idx"]).clone().appendTo(self);
158
+
159
+ });
160
+
161
+ self.find('td,th').filter(':gt(0):lt('+list.length+')').remove();
162
+
163
+ });
164
+
165
+ });
166
+
167
+ });
168
+
169
+ ```
170
+
171
+ ```HTML
172
+
173
+ <table id="t1">
174
+
175
+ <thead>
176
+
177
+ <tr>
178
+
179
+ <th data-type="string">名前<span></span></th>
180
+
181
+ <th data-type="integer">国語<span></span></th>
182
+
183
+ <th data-type="integer">数学<span></span></th>
184
+
185
+ <th data-type="integer">保健<span></span></th>
186
+
187
+ <th data-type="integer">社会<span></span></th>
188
+
189
+ <th data-type="integer">美術<span></span></th>
190
+
191
+ <th data-type="integer">英語<span></span></th>
192
+
193
+ </tr>
194
+
195
+ </thead>
196
+
197
+ <tbody>
198
+
199
+ <tbody>
200
+
201
+ <tr class="dothesort">
202
+
203
+ <td>鈴木</td><td>12</td><td>19</td><td>25</td><td>25</td><td>89</td><td>25</td>
204
+
205
+ </tr>
206
+
207
+ <tr class="dothesort">
208
+
209
+ <td>高橋</td><td>25</td><td>89</td><td>25</td><td>25</td><td>89</td><td>25</td></tr>
210
+
211
+ </tr>
212
+
213
+ <tr class="dothesort">
214
+
215
+ <td>佐藤</td><td>60</td><td>987</td><td>89</td><td>25</td><td>89</td><td>25</td>
216
+
217
+ </tr>
218
+
219
+ <tr class="dothesort">
220
+
221
+ <td>山田</td><td>604</td><td>78</td><td>25</td><td>25</td><td>89</td><td>25</td>
222
+
223
+ </tr>
224
+
225
+ </tbody>
226
+
227
+ </table>
228
+
229
+
230
+
231
+ ```

1

追記

2018/04/02 05:27

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -83,3 +83,39 @@
83
83
  </table>
84
84
 
85
85
  ```
86
+
87
+
88
+
89
+ # ちょっと改良
90
+
91
+ こちらのほうがちょっとjQueryらしいかもしれませんね
92
+
93
+ ```javascript
94
+
95
+ $(function(){
96
+
97
+ $('#t1 tbody td').filter(function(){
98
+
99
+ return $(this).closest('tr').find('td').index(this)==0;
100
+
101
+ }).on('click',function(){
102
+
103
+ var t1=parseInt($(this).siblings().eq(0).text());
104
+
105
+ var t2=parseInt($(this).siblings().eq(1).text());
106
+
107
+ if(t1>t2){
108
+
109
+ $(this).closest('table').find('tr').each(function(){
110
+
111
+ $(this).find('td,th').eq(1).appendTo($(this));
112
+
113
+ });
114
+
115
+ }
116
+
117
+ });
118
+
119
+ });
120
+
121
+ ```