jQuery .next()。not()无法找到动态创建的元素

时间:2015-07-25 23:25:52

标签: javascript jquery

我试图在点击的元素之后创建一个输入元素,只有它不存在。 .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);

      }
  });
});

on in this thread

1 个答案:

答案 0 :(得分:0)

.not()不是布尔函数,它是一个选择器 - 它返回与选择器不匹配的给定集合的元素。要判断选择器是否找到任何内容,请测试其长度。

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

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