元素长度
在控制台中,我输入“ $ 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">
答案 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">