当我使用 name=value 选择器执行 .find 时,我没有得到任何元素。我的语法看起来是正确的,我看不出我做错了什么。我知道它从中选择的对象有元素,确切地说是 7 个,以及我正在寻找的属性。所以我很困惑为什么 .find 不起作用。
页面上的 Javascript:
$(document).ready(function () {
var mainCatName = 'category.SelectedValue'
$('#Button1').on('click', function () {
var td = $('input[name="' + mainCatName + '"]:checked').parent('td');
var tdIndex = td.index();
if (selectElems == null) {
//1
selectElems = $("#pumpConfigTable td:nth-child(" + (tdIndex + 1) + ") select, #pumpConfigTable td:nth-child(" + (tdIndex + 1) + ") input");
}
var projectInfoID = $('#ProjectInfoID').attr('value');
var mainCategoryID = $('input[name="' + mainCatName + '"]:checked').attr('value');
var postBackObject = makeProjectInfoObjects(projectInfoID, mainCategoryID, selectElems);
var blah = "blah";
});
});
makeProjectInfoObjects 的部分来源:
function makeProjectInfoObjects(pInfoID, mainCatID, pcOptions) {
//var pc = new PumpConfig();
var pc = new Array();
var dbIDs = _.pluck(pcOptions, "data-dbid");
var uniquedbIDs = _.unique(dbIDs);
uniquedbIDs = _.reject(uniquedbIDs, function (checkID) { return checkID == undefined; });
var len = uniquedbIDs.length;
for (var i = 0; i < len; ++i) {
//2
var categories = $(pcOptions).find("[data-dbid='" + uniquedbIDs[i] + "']");
var uniqueNames = _.pluck(categories, "name");
var singleOptions = $(categories).find(':not([name]');
var soLen = singleOptions.length;
for (var j = 0; j < soLen; ++j) {
pc.push({
pcID: uniquedbIDs[i],
pInfoID: pInfoID,
configCatID: mainCatID,
configSubCatID: $(singleOptions[i]).attr('data-subcatid'),
configValue: $(singleOptions[i]).attr('value')
});
我在 XP 上使用 JQuery 1.8.1 和 IE8。
根据 IE 开发者工具,第一个选择器是这样的(并且有效)://1"#pumpConfigTable td:nth-child(2) select, #pumpConfigTable td:nth-child(2) input"
第二个选择器是这样的(它不起作用)://2"#pumpConfigTable td:nth-child(2) select, #pumpConfigTable td:nth-child(2) input [data-dbid='1']"