创建对象和对象长度

时间:2019-07-20 01:38:40

标签: javascript jquery

元素长度

在控制台中,我输入“ $ reminder_blank.length”,然后答案只是一个。我试图检查该元素在哪里。它始终是最后一个元素。我可以知道为什么吗?我希望长度是3 ... 谢谢

const $reminder_blank= $('<p>This input field cannot be blank.</p>');
$( "[type='text']").after($reminder_blank); 
 <label for="name">Name:</label>
    <input type="text" id="name" name="user_name">

    <label for="zip">Zip Code:</label>
    <input id="zip" name="user_zip" type="text"> 
    <label for="cc-num">Card Number:</label>
    <input id="cc-num" name="user_cc-num" type="text">

1 个答案:

答案 0 :(得分:0)

当您将完整的HTML字符串(不是选择符字符串)传递给jQuery($)时,这将创建一个与jQuery对象关联的元素,并将结果分配给该对象。与您的

const $reminder_blank = $('<p>This input field cannot be blank.</p>');

jQuery将创建与<p>关联的$reminder_blank元素。仅创建了一个元素。

如果您随后使用.after将元素插入到DOM中,则jQuery将克隆 $reminder_blank中的单个元素,并将其插入其他每个匹配的元素之后(此处,则与"[type='text']"选择器字符串匹配的对象除外,最后一个元素-调用了最后一个元素.after的元素将被赋予最初在$reminder_blank中的元素。因此,除最后一个元素外,所有元素都插入了will be clones

  

重要:如果目标元素不止一个,则将为每个目标(最后一个目标除外)创建插入元素的克隆副本。

如果要选择所有插入的元素,请使用选择器字符串[type='text'] + p

const $reminder_blank = $('<p>This input field cannot be blank.</p>');
$("[type='text']").after($reminder_blank);

const $insertedReminders = $("[type='text'] + p");
console.log($insertedReminders.length);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="name">Name:</label>
<input type="text" id="name" name="user_name">

<label for="zip">Zip Code:</label>
<input id="zip" name="user_zip" type="text">
<label for="cc-num">Card Number:</label>
<input id="cc-num" name="user_cc-num" type="text">