javascript - jQuery last-child 选择器不是 "refreshing"

标签 javascript jquery html

在页面的最后一个文本框上,调用了一个函数来插入另一个文本框。使它成为新的最后一个文本区域,但是 jQuery 看不到这个文本区域是新的最后一个文本区域。

该函数停留在通过 html 插入的最后一个文本区域上。

function add_new() {
  $('.edit_main').append('<li><div class="edit_one"><textarea class="text1"></textarea></div><div class="edit_two"><textarea class="text2"></textarea><textarea class="text3"></textarea></div><div style="clear:both;"></div></li>');
}

$(".edit_main li:last-child div.edit_two textarea:last-child").keydown(function(e) {
  var code = e.keyCode || e.which;
  if (code == 9) {
    add_new();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ol class="edit_main">
  <li>
    <div class="edit_one">
      <textarea class="text1"></textarea>
    </div>
    <div class="edit_two">
      <textarea class="text2"></textarea>
      <textarea class="text3"></textarea>
    </div>
    <div style="clear:both;"></div>
  </li>
  <li>
    <div class="edit_one">
      <textarea class="text1"></textarea>
    </div>
    <div class="edit_two">
      <textarea class="text2"></textarea>
      <textarea class="text3"></textarea>
    </div>
    <div style="clear:both;"></div>
  </li>

</ol>

jsfiddle

最佳答案

这是一次性选择器。为了让它动态更新,你需要使用 event delegation .

$(document).on("keydown", ".edit_main li:last-child div.edit_two textarea:last-child", function (e) {
  if (e.which == 9){
    add_card();
  }
});

关于javascript - jQuery last-child 选择器不是 "refreshing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129023/

相关文章:

jquery - 在 jquery 中,有没有一种方法可以在没有 $(this) 的情况下迭代 jQuery 数组?

html - Node Sass 尚不支持您当前的环境 : Windows 64-bit with Unsupported runtime

java - 将 Java applet 置于联机状态 (netbeans)

php - 由于某种原因,我的链接栏上的背景图片没有显示

javascript - 如何一次创建一项树形数据结构?

javascript - 如何使用 if 语句删除和添加类?

javascript - JPlayer 不适用于 Firefox Android,但不适用于所有其他浏览器

javascript - 如何在 dojo 中制作图像 slider ?

jquery - angularjs sortable - 更新排序顺序属性

javascript - 如何在单击函数内的 jQuery 单击函数中停止事件传播?