1

わかりました、私はそれらが変更されているかどうかを確認するために一連のテストを行っている JavaScript を実行しています。それらが変更されている場合は、チェック ボックスがオンになっているかどうかを確認する必要があります。ただし、特定の理由により、これを行うためにフォームを使用していません。テーブルを表示するコードは次のとおりです。

<table class="db-view-sku-table">
<thead>
    <tr>
        <th>Merge <br />Callouts</th>
        <th>Current Page</th>
        <th>Current Callout</th>
        <th>New Page</th>
        <th>New Callout</th>
        <th>MFG SKU</th>
        <th>Client SKU</th>
        <th>Description</th>
    </tr>
</thead>
<tbody>
    <tr class="odd changed_value">
      <td class="hidden db-sku-nid">192297</td>
      <td class="hidden db-co-nid">212300</td>
      <td class="merge"><input type="checkbox" name = "mergeme" class="checked" /></td>
      <td class="db-current-page"><a href="/node/212299" target="_blank">6</a></td>
      <td class="db-current-co">A</td>
      <td class="db-move-page"><input type="text" class="page-select" size="4" value="" /></td>
      <td class="db-move-co"><input type="text" class="co-select" size="4" value="A" /></td>
      <td class="db-sku"><a href="/plain/node/192297/edit" class="popup" title="Click to view global SKU details in popup window.">AAG794200</a></td>
      <td class="db-client-sku editable-text">AAG-794200</td>
      <td class="db-description">AT-A-GLANCE Sorbet Wkl/Mthly Plnr</td>
    </tr>
    <tr class="even changed_value">
      <td class="hidden db-sku-nid">97160</td>
      <td class="hidden db-co-nid">212301</td>
      <td class="merge"><input type="checkbox" name = "mergeme" class="checked" /></td>
      <td class="db-current-page"><a href="/node/212299" target="_blank">6</a></td>
      <td class="db-current-co">A</td>
      <td class="db-move-page"><input type="text" class="page-select" size="4" value="" /></td>
      <td class="db-move-co"><input type="text" class="co-select" size="4" value="A" /></td>
      <td class="db-sku"><a href="/plain/node/97160/edit" class="popup" title="Click to view global SKU details in popup window.">AAG76PN0105</a></td>
      <td class="db-client-sku editable-text">AAG-76PN0105</td>
      <td class="db-description">QUICKNOTES WKLY/MNTH, SPECIAL EDITION</td>

保存ボタンが押されたときのコード:

function setupMassSave() {
$('.save-button').click(function() {
    var merge = getMergeList();
    var skus = getSkuList();
    var pages = getPageList();
    var callouts = getCalloutList();
    var currco = getCurrCalloutList();
    $.ajax({
        url: '/skumove/save_all/' + merge + '/' + skus + '/' + pages + '/' + callouts + '/' + currco,
        cache: false,
        success: refreshView
    });
});
}

function getSkuList() {
var slist = [];
$('.changed_value').each(function(index) {
    if(!$(this).children('.merge').children('.checked').checked){ 
        slist.push($(this).children('.db-sku-nid').text());
    }
});
return slist;
}
function getMergeList() {
var mlist = [];
$('.changed_value').each(function(index) {
    if($(this).children('.merge').children('.checked').checked) { 
        mlist.push($(this).children('.db-sku-nid').text());
    }
});
return mlist;
}

私が問題を抱えているのは、これら2つの機能だけです。他の 3 つの関数は正常に動作し、必要な値を返します。問題が ('.merge').clicked 領域内のどこかにあることはわかっています。

ご協力いただきありがとうございます。

4

2 に答える 2

4

.checkedjQueryオブジェクトに適用しようとしている(ブール値の)バニラJavaScriptプロパティです。それが機能していない理由です。

交換

$(this).children('.merge').children('.checked').checked

どちらかと

$(this).children('.merge').children('.checked')[0].checked

また

$(this).children('.merge').children('.checked').is(':checked')

また

$(this).children('.merge').children('.checked:checked').length
于 2012-09-13T17:18:32.810 に答える
1

クラスセレクター .checked の代わりに疑似セレクター :checked を使用する

if($(this).children('.merge').children(':checked').length) { 
    mlist.push($(this).children('.db-sku-nid').text());
}
于 2012-09-13T17:18:00.410 に答える