我有一些表单元素通过ajax添加到表中,如下所示。
<tr>
<td></td>
<td>
<input id="cde[0]" name="cde[0]" class="required" value="30-09-2015">
<input type="hidden" id="cddbe[0]" name="cddbe[0]" value="2015-09-30">
</td>
<td>
<input id="cqtye[0]" name="cqtye[0]" class="required number" value="30">
</td>
<td>
<input id="cremarke[0]" name="cremarke[0]" value="remarks 1">
</td>
</tr>
表格中可能有很多行元素。
我试图在使用jquery.length属性获取其值之前找到元素是否存在,如下所示
var nor=$('#commite tr').size()-2;
var c="cqtye["+nor+"]";
if($('#'+c).length){
console.log("element exists");
}
但.length总是假的。当我检查表外的元素的长度时,它返回1.但是在该表内的元素上它总是为0.
这个表位于div和bith div和table中,具有唯一的ID。
有人可以指导我如何在这种情况下检查元素是否存在。
答案 0 :(得分:0)
当您使用[]
即ID中的元字符时,需要对其进行转义。
使用
var c="cqtye\\["+nor+"\\]";
使用任何元字符(例如!&#34;#$%&amp;&#39;()* +,。/:;&lt; =&gt;?@ [] ^`{| }〜)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。
$(function() {
var nor = $('#commite tr').length;
var c="cqtye\\["+nor+"\\]";
if ($('#' + c).length) {
snippet.log("element exists");
}
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<table>
<tr>
<td></td>
<td>
<input id="cde[0]" name="cde[0]" class="required" value="30-09-2015">
<input type="hidden" id="cddbe[0]" name="cddbe[0]" value="2015-09-30">
</td>
<td>
<input id="cqtye[0]" name="cqtye[0]" class="required number" value="30">
</td>
<td>
<input id="cremarke[0]" name="cremarke[0]" value="remarks 1">
</td>
</tr>
</table>
&#13;
答案 1 :(得分:0)
您需要在创建jquery选择器时转义css元字符,或者改为使用名称值选择器:
if($("[id='"+c+"']").length){
console.log("element exists");
}