Jquery长度属性总是返回0

时间:2015-09-21 07:48:48

标签: jquery html

我有一些表单元素通过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。

有人可以指导我如何在这种情况下检查元素是否存在。

2 个答案:

答案 0 :(得分:0)

当您使用[]即ID中的元字符时,需要对其进行转义。

使用

var c="cqtye\\["+nor+"\\]";

Docs

  

使用任何元字符(例如!&#34;#$%&amp;&#39;()* +,。/:;&lt; =&gt;?@ [] ^`{| }〜)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。

&#13;
&#13;
$(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;
&#13;
&#13;

答案 1 :(得分:0)

您需要在创建jquery选择器时转义css元字符,或者改为使用名称值选择器:

if($("[id='"+c+"']").length){
   console.log("element exists");
}