jQuery Selector规范不一致
Inconsistent jQuery Selector specifications
我有一个如下的表
<div id="div13" class="ctnr">
<table id="mainTable13" class="dtable" cellpadding="3" cellspacing="1" border="0">
<thead>
<tr><th>*</th><th>Proposal</th></tr>
</thead>
<tbody id="tbdy">
<tr id="zrow0" class="gradeX">
<td><input id="ckb0" type="checkbox" /></td>
<td id="proposal0" style="width:55%">This is a comment</td>
</tr>
</tbody>
</table>
</div>
代码中引用如下:
function extractRowCell(divNode){
// Here we will extract all the checked Proposals...
var all = ''
var i=0
var dnode = '#'+divNode.id // First construct a CSS-like ref to the node's ID
var mTable = dnode.replace("div","mainTable")+' '+"#tbdy tr " //Ref to the DataTable.TopRow in the DIV
//alert(mTable);
$(mTable).each(function() {
//alert($(dnode+' #proposal'+i).text());
//alert($('#ckb'+i+':checked').val());
if ($('#ckb'+i+':checked').val() !== undefined) {
alert($(dnode+' #proposal'+i).text());
all = all+$(dnode+' #proposal'+i).text()+ ''n'n'n';
}
i=i+1;
alert(all+' 'n'+mTable+'#proposal'+i);
});
}
问题是为什么这两个被注释掉的警报需要不同的选择器结构???我对此完全感到困惑!在这里,让我解读它们,并将它们并排放置。。。
alert($('#div13 #proposal1' ).text());
alert($( '#ckb1:checked').val());
实际上,第二个选择器不需要指示它位于第13个div("#div13"),而上面没有"#div3"的选择器将指向"#div1"。但是,如果在第二个值之前加上"#div13",那么测试始终会给出false值。
我承认我很困惑!我今天一整天都在和这个斗争!没有线索!任何能让我挺直腰板的勇敢的人都是我的英雄!
Dennis
理想情况下,元素的id在页面上应该是唯一的。如果你遵循它们,你就不需要id选择器的任何前缀来限制元素在页面上的匹配。
在您的情况下,当您将#div13
前缀为#ckb1
时,jQuery将在#div13
中查找#ckb1
,否则它将在整个页面中搜索。当您不指定前缀#div1
时,如果存在多个id相同的元素,jQuery将选择id匹配的第一个元素,并将其包含在匹配的集合中。
相关文章:
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- Android和JavaScript解析API之间不一致
- Javascript的行为与PHP包含文件不一致
- 对这种与document.domain和CORS相关的不一致行为的解释是什么
- 点击链接行为不一致
- Passport.js`isAuthenticated()`不一致的行为;当它应该是真的时候是假的
- 与显示不一致
- Ext 4.2.1 模型日期解析在浏览器之间不一致
- 通过 Dropbox API 上传时的文件内容不一致
- JavaScript - 对象属性不一致
- Javascript 混淆了 null、instanceof 和 typeof 的语法不一致
- localeCompare 显示使用前导变音字符对单词进行排序时不一致的行为
- SVG 对象部分上的 JQuery click() 不一致
- 使用forEach和.shift()时结果不一致
- Window.open浏览器的高度不一致
- 不同浏览器中的LinkButton PageMethod行为不一致
- 当活动处于后台时,Android WebView不一致
- 使用正则表达式删除标记时,Firefox和Chrome之间存在不一致
- JQuery更改在浏览器之间的行为不一致
- jQuery Selector规范不一致