2017-09-07 1 views
-2

ソリューションを探しています 選択した各列の上部にチェックボックスがあるテーブルがあります。 1つのチェックボックスをクリックするだけで、 "チェックされた"列のすべてのtdをクリックしたいと思っています。これまでチェックボックスオンの列にあるすべてのtdのクラスを切り替えます

フィドル:

$(':checkbox').on('change', function(e) { 
 
    var row = $(this).closest('tr'); 
 
    var hmc = row.find(':checkbox:checked').length; 
 
    row.find('td.counter').text(hmc); 
 
}); 
 

 
$("td.zero").on("click", function() { 
 
    if ($(this).hasClass("zero2")) { 
 
    $(this).removeClass("zero2"); 
 
    var row3 = $(this).closest('tr'); 
 
    var wal4 = $(this).text(); 
 
    var wal5 = $(this).closest('tr').children('td.counter2').text(); 
 
    wal6 = parseFloat(wal5, 10) - parseFloat(wal4, 10); 
 
    row3.find('td.counter2').text(wal6.toFixed(2)); 
 

 

 
    } else { 
 

 
    $(this).addClass("zero2"); 
 

 
    var row2 = $(this).closest('tr'); 
 
    var wal = $(this).text(); 
 
    var wal2 = $(this).closest('tr').children('td.counter2').text(); 
 
    wal3 = parseFloat(wal, 10) + parseFloat(wal2, 10); 
 
    row2.find('td.counter2').text(wal3.toFixed(2)); 
 

 
    } 
 

 
}); 
 

 
$(':checkbox.taker').on('change', function(e) { 
 
    alert("tds in column clicked"); 
 
});
td { 
 
    text-align: center; 
 
    padding: 8px 8px 8px 8px; 
 
    cursor: default; 
 
} 
 

 
input.ptaszek { 
 
    transform: scale(2); 
 
} 
 

 
td.zero2 { 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <thead> 
 
     <tr> 
 
     <th>X</th> 
 
     <th>X</th> 
 
     <th>X</th> 
 
     <th>Count1</th> 
 
     <th>Count2</th> 
 
     <th>Count3</th> 
 
     <th>Val1</th> 
 
     <th>Val2</th> 
 
     <th>Val3</th> 
 
     <th>Val4</th> 
 
     <th>Val5</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr> 
 
     <td></td> 
 
     <td></td> 
 
     <td></td> 
 
     <td></td> 
 
     <td></td> 
 
     <td></td> 
 
     <td><input type='checkbox' class='taker'></td> 
 
     <td><input type='checkbox' class='taker'></td> 
 
     <td><input type='checkbox' class='taker'></td> 
 
     <td><input type='checkbox' class='taker'></td> 
 
     <td><input type='checkbox' class='taker'></td> 
 
     </tr> 
 
     <tr> 
 
     <td> 
 
      <div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div> 
 
     </td> 
 
     <td> 
 
      <div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div> 
 
     </td> 
 
     <td> 
 
      <div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div> 
 
     </td> 
 
     <td class='counter'>0</td> 
 
     <td class='counter2'>0</td> 
 
     <td class='counter3'>0</td> 
 
     <td class='zero'>0.5</td> 
 
     <td class='zero'>5</td> 
 
     <td class='zero'>2.1</td> 
 
     <td class='zero'>0.2</td> 
 
     <td class='zero'>1.7</td> 
 
     </tr> 
 
     <tr> 
 
     <td> 
 
      <div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div> 
 
     </td> 
 
     <td> 
 
      <div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div> 
 
     </td> 
 
     <td> 
 
      <div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div> 
 
     </td> 
 
     <td class='counter'>0</td> 
 
     <td class='counter2'>0</td> 
 
     <td class='counter3'>0</td> 
 
     <td class='zero'>1.4</td> 
 
     <td class='zero'>0.5</td> 
 
     <td class='zero'>2</td> 
 
     <td class='zero'>1.1</td> 
 
     <td class='zero'>1.5</td> 
 
     </tr> 
 
    </tbody> 
 
</table>

それは今、個々のtdクリックのために働いていますが、私は "バルク" のチェックボックスをチェックして、すべてのtdのをクリックして作成する必要があります。)

誰もが持っていますアイデア? あなたの返信ありがとう!

+0

あなたは何が起こるはず行のチェックボックスをクリックする場合は、さらに多くの問題を説明することはできますか?明確に説明してください。現在、問題は何ですか? –

+0

[COLUMN]チェックボックスをクリックすると、選択した列(例:Val2)のすべてのtdをクリック/トグルする必要があります。 これらの小さなチェックボックスを意味します。 – KrystianK

答えて

0

更新:答えを更新したコメントに基づいて

JSFiddle Demo

これはあなたを助けるでしょうか?

ロジック:

チェックチェックボックスがチェックされている場合は、その彼らが選択されている場合は、選択として、関係なく、すべての各要素を割り当て、次にチェックしたり、既に選択されていないと選択されていない、ので、エンドユーザーのためにその逆の場合チェックボックスを使用すると、すべての列を選択/選択解除できるようになります。

$(':checkbox').on('change', function(e) { 
 
    var row = $(this).closest('tr'); 
 
\t var hmc = row.find(':checkbox:checked').length; 
 
    row.find('td.counter').text(hmc); 
 
}); 
 

 
$("td.zero").on("click", function() { 
 
if ($(this).hasClass("zero2")) { 
 
$(this).removeClass("zero2"); 
 
var row3 = $(this).closest('tr'); 
 
var wal4 = $(this).text(); 
 
var wal5 = $(this).closest('tr').children('td.counter2').text(); 
 
wal6 = parseFloat(wal5, 10) - parseFloat(wal4, 10); 
 
row3.find('td.counter2').text(wal6.toFixed(2)); 
 

 

 
     } else { 
 

 
$(this).addClass("zero2"); 
 

 
var row2 = $(this).closest('tr'); 
 
var wal = $(this).text(); 
 
var wal2 = $(this).closest('tr').children('td.counter2').text(); 
 
wal3 = parseFloat(wal, 10) + parseFloat(wal2, 10); 
 
row2.find('td.counter2').text(wal3.toFixed(2)); 
 

 
} 
 
     
 
     }); 
 
     
 
$(':checkbox.taker').on('change', function(e) { 
 
    var elem = $(this).parent().index(); 
 
    $('tr').each(function(index){ 
 
    var td = $(this).children().eq(elem); 
 
    if(index > 1){ 
 
     if($(':checkbox.taker:checked').length > 0){ 
 
     td.addClass('zero2'); 
 
     }else{ 
 
     td.removeClass('zero2'); 
 
     } 
 
    } 
 
    }); 
 
});
td 
 
{ 
 
    text-align: center; 
 
    padding: 8px 8px 8px 8px; 
 
    cursor: default; 
 
} 
 
input.ptaszek { 
 
    transform: scale(2); 
 
} 
 

 
td.zero2{ 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
<thead> 
 
<tr> 
 
<th>X</th><th>X</th><th>X</th> 
 
<th>Count1</th><th>Count2</th><th>Count3</th> 
 
<th>Val1</th><th>Val2</th><th>Val3</th><th>Val4</th><th>Val5</th> 
 
</tr> 
 
</thead> 
 

 
<tbody> 
 
<tr><td></td><td></td><td></td><td></td><td></td><td></td> 
 
<td><input type='checkbox' class='taker'></td> 
 
<td><input type='checkbox' class='taker'></td> 
 
<td><input type='checkbox' class='taker'></td> 
 
<td><input type='checkbox' class='taker'></td> 
 
<td><input type='checkbox' class='taker'></td> 
 
</tr> 
 
<tr> 
 
<td><div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div></td> 
 
<td><div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div></td> 
 
<td><div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div></td> 
 
<td class='counter'>0</td><td class='counter2'>0</td><td class='counter3'>0</td> 
 
<td class='zero'>0.5</td><td class='zero'>5</td><td class='zero'>2.1</td><td class='zero'>0.2</td><td class='zero'>1.7</td> 
 
</tr> 
 
<tr> 
 
<td><div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div></td> 
 
<td><div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div></td> 
 
<td><div><input type='checkbox' name='chkboxarray' \t class='ptaszek'></div></td> 
 
<td class='counter'>0</td><td class='counter2'>0</td><td class='counter3'>0</td> 
 
<td class='zero'>1.4</td><td class='zero'>0.5</td><td class='zero'>2</td><td class='zero'>1.1</td><td class='zero'>1.5</td> 
 
</tr> 
 
</tbody> 
 
</table>

+0

これは悪くないけど今..トグルされたセルから "Count2"セルに値を渡して(トグル時)増加し、(トグルしていないとき)減少させる関数を呼び出す必要もあります。 私は単一のtdのそれをうまくやっているときに、チェックボックスを使って全体のカラムを一括してトグルしても、それは働いていますが、カラムを2つチェックしてそのうちの1つをチェックすると "Count2"トグルされたセル値によって減少する。 これを修正する方法はありますか? あなたのソリューションで更新され、jsfiddleに移動しました:https://jsfiddle.net/3Lqr5LkL/5/ – KrystianK

+0

@KrystianK最新の回答 –

+0

今、増減は完璧ですが、 1つの列のチェックボックスをオンにして、それらの1つを選択解除しようとすると、チェックボックスはオフになりますが、セルと 'Count2'の値は変更されません。 – KrystianK

関連する問題