jQuery .next().not()不能查找动态创建的元素

jQuery .next().not() can't find dynamically created element

本文关键字:创建 元素 动态 不能 next not jQuery 查找      更新时间:2023-09-26

我试图在单击元素后创建一个输入元素,只有当它不存在时。.next().not()函数工作,但似乎无法找到动态创建的元素。

$(function(){
$("p").click(function(){
    if($(this).next().not('input')){
    var currentElement = $(this);
    var currentText = ($(this).text());
    var input = $('<input type="text" >');
    var saveBtn = $('<button type="button">Save</button>');
    input.val(currentText);
    saveBtn.click(function(){
     currentElement.text(input.val());
    $((input).remove());
    $((this).remove()); 
    });
    input.insertAfter(this);
    saveBtn.insertAfter(input);
      }
  });
});
在jsfiddle

.not()不是布尔函数,它是一个选择器——它返回给定集合中与选择器不匹配的元素。要判断一个选择器是否找到了什么,测试它的长度。

你根本不需要使用.not()。如果.next('selector')与选择器匹配,则返回下一个元素,否则返回空集合。

if ($(this).next('input').length == 0) {
    ...
}