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;
}

我唯一遇到的问题是这两个功能。他们其他 3 个函数工作正常并返回我需要的值。我知道问题出在 ('.merge').clicked 区域内。

谢谢你的帮助。

4

2 回答 2

4

.checked是一个(布尔)vanilla JavaScript 属性,您尝试将其应用于 jQuery 对象。这就是为什么它不起作用。

代替

$(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 回答