注:これをこのリンクにあるJSFIDDLEに追加しました
3 つのテーブルのいずれかから行を操作し、いくつかのボタン クリックとチェックボックスを処理するための基本的な jQuery コードをいくつか作成しました。私は今、n00bのように感じています。私はこれを見て、より一般的な関数に変えることができるものがたくさんあることに気付きましたが、JS 関数の作成に精通していません。どんなポインタでも大歓迎です。
同様の機能のブロックがあるので、各ブロック タイプを単純化する方法について説明したいと思います。
- ボタンスワップ
- チェックリストの選択/選択解除
- 引越しチェックリスト
- パネルの表示/非表示
コードは次のとおりです。
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('#displayActivePanel').hide();
$('#displayInactivePanel').hide();
// Button event handlers to move items from/to differing tables...
$('#TableAdminPortfolio tbody .buttonSwap').live('click', function () {
var tr = $(this).closest('tr');
var stat = tr.children('.padLeft.status').text().trim();
var tableActiveProjects = $('#TableActiveProjects tbody');
var tableInactiveProjects = $('#TableInactiveProjects tbody');
tr.fadeOut(1000);
if (stat == 'Active') {
tableActiveProjects.prepend(tr);
} else {
tableInactiveProjects.prepend(tr);
}
tr.fadeIn(1000);
});
$('#TableActiveProjects tbody .buttonSwap').live('click', function () {
var tr = $(this).closest('tr');
var tableAdminPortfolio = $('#TableAdminPortfolio tbody');
tr.fadeOut(1000);
tableAdminPortfolio.prepend(tr);
tr.fadeIn(1000);
});
$('#TableInactiveProjects tbody .buttonSwap').live('click', function () {
var tr = $(this).closest('tr');
var tableAdminPortfolio = $('#TableAdminPortfolio tbody');
tr.fadeOut(1000);
tableAdminPortfolio.prepend(tr);
tr.fadeIn(1000);
});
$('#masterCheckBoxAdminPortfolio').live('change', function () {
var isChecked = $('#masterCheckBoxAdminPortfolio:checked').val() != undefined;
var list = $('#TableAdminPortfolio .CheckBoxProjects');
list.each(function () {
this.checked = isChecked;
});
});
$('#TableActiveProjectsCheckbox').live('change', function () {
var isChecked = $('#TableActiveProjectsCheckbox:checked').val() != undefined;
var list = $('#TableActiveProjects .CheckBoxProjects');
list.each(function () {
this.checked = isChecked;
});
});
$('#TableInactiveProjectsCheckbox').live('change', function () {
var isChecked = $('#TableInactiveProjectsCheckbox:checked').val() != undefined;
var list = $('#TableInactiveProjects .CheckBoxProjects');
list.each(function () {
this.checked = isChecked;
});
});
$('#TableAdminPortfolioRemoveAllChecked').live('click', function () {
var list = $('#TableAdminPortfolio .CheckBoxProjects');
list.each(function () {
var isChecked = $(this).closest('td').children('.CheckBoxProjects:checked').val() != undefined;
if (isChecked) {
var tr = $(this).closest('tr');
var stat = tr.children('.padLeft.status').text().trim();
var tableActiveProjects = $('#TableActiveProjects tbody');
var tableInactiveProjects = $('#TableInactiveProjects tbody');
tr.fadeOut(1000);
if (stat == 'Active') {
tableActiveProjects.prepend(tr);
} else {
tableInactiveProjects.prepend(tr);
}
tr.fadeIn(1000);
}
});
});
$('#TableActiveProjectsAddAllChecked').live('click', function () {
var tableAdminPortfolio = $('#TableAdminPortfolio tbody');
var list = $('#TableActiveProjects .CheckBoxProjects');
list.each(function () {
var tr = $(this).closest('tr');
var isChecked = $(this).closest('td').children('.CheckBoxProjects:checked').val() != undefined;
if (isChecked) {
tr.fadeOut(1000);
tableAdminPortfolio.prepend(tr);
tr.fadeIn(1000);
}
});
});
$('#TableInactiveProjectsAddAllChecked').live('click', function () {
var tableAdminPortfolio = $('#TableAdminPortfolio tbody');
var list = $('#TableInactiveProjects .CheckBoxProjects');
list.each(function () {
var tr = $(this).closest('tr');
var isChecked = $(this).closest('td').children('.CheckBoxProjects:checked').val() != undefined;
if (isChecked) {
tr.fadeOut(1000);
tableAdminPortfolio.prepend(tr);
tr.fadeIn(1000);
}
});
});
$('#showActivePanel').click(function () {
$('#displayActivePanel').show();
});
$('#hideActivePanel').click(function () {
$('#displayActivePanel').hide();
});
$('#showInactivePanel').click(function () {
$('#displayInactivePanel').show();
});
$('#hideInactivePanel').click(function () {
$('#displayInactivePanel').hide();
});
});
}
</script>