为什么不'在JQuery中找到第二个css选择器的工作
Why doesn't .find work with this second css selector in JQuery?
当我使用name=value选择器执行.fund时,我没有得到任何元素。我的语法看起来是正确的,我看不出我做错了什么。我知道它从中选择的对象有元素,确切地说是7,具有我要查找的属性。所以我很困惑为什么这个发现不起作用。
页面上的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 Developer Tools的说法,第一个选择器是这样的(而且它很有效)://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']"
如果您希望查找具有特定属性data-dbid
的input
和select
元素,则不应使用find()
,因为此方法搜索的元素是您用选择器字符串选择的元素的后代
"#pumpConfigTable td:nth-child(" + (tdIndex + 1) + ") select, #pumpConfigTable td:nth-child(" + (tdIndex + 1) + ") input"
您匹配的元素将是select
元素和input
元素。我认为我的假设是正确的,你想在这个集合中找到特定的元素?如果是这样,请尝试使用jQuery的filter()
方法,而不是find。
.滤波器(选择器)
返回:jQuery
描述:将匹配的元素集减少为与选择器匹配或通过函数测试的元素。
所以你会这样做:
var categories = $(pcOptions).filter("[data-dbid='" + uniquedbIDs[i] + "']");
如果您希望input
具有data-dbid='1'
,则需要移除两者之间的空间:
"#pumpConfigTable td:nth-child(2) select, #pumpConfigTable td:nth-child(2) input[data-dbid='1']"
- 下拉选择可自动更改第二个下拉选择
- 为什么不'在JQuery中找到第二个css选择器的工作
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- CORS-重定向到第二个GET正在接收的页面
- 正则表达式与数字中的第二个点匹配
- 如何在react js中移动第二个组件
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 关闭第二个事件源上的第一个事件源's onopen方法
- D3从嵌套的JSON中绘制第二个圆环图
- CSS 图标旋转 鼠标关闭时的第二个动画
- 为什么我添加的第二个jQuery代码部分/新的CSS部分导致第一个jQuery代码在我的页面上不起作用
- HTML,CSS.在移动网站中,在第一个节点之前先显示第二个节点
- XPath如何查找具有CSS类名的第二个元素
- css中类的第二个实例的快捷方式
- 在同一对象上添加第二个动画将删除css属性
- JavaScript第二个循环没有't更改CSS
- 在下一个页面加载之前创建第二个css过渡
- CSS过渡在一个元素中起作用,但在第二个元素中不起作用
- 当我尝试悬停在第二个子项关闭- Jquery或css问题
- 如何改变第二个CSS属性&第6个DIV使用jquery