好的,我正在为一个应用程序创建一个登录界面,其中有一个按钮,上面写着" Not You?"单击时,会弹出一个文本框来更新屏幕上的用户名。我遇到的问题是:用户名更新一次,但再次尝试时无法正常工作。我的jQuery有什么问题?
这是我的jQuery:
var main = function(){
$('.not').click(function(){
$('.login-wrap').fadeOut(300, function(){
$('.not-you').fadeIn(300);
});
});
$('.enter').click(function(){
$('.name').replaceWith($('.new-input').val());
$('.not-you').fadeOut(300, function(){
$('.login-wrap').fadeIn(300);
});
});
}
$(document).ready(main);
HERE'S指向CodePen的链接。
谢谢!
答案 0 :(得分:2)
从docs开始,.replaceWith()
方法会从DOM中删除内容并通过一次调用在其位置插入新内容,因此第一次它正常工作但第一次{{1使用它将整个.replaceWith()
替换为类'.new-input'
,这就是为什么之后它会产生问题。
而不是
'name'
尝试
$('.name').replaceWith($('.new-input').val());
OR
$('.name').html($('.new-input').val());
答案 1 :(得分:1)
当您执行replaceWith()时,实际上是使用类'.name'删除整个标记。 因此,在下一次代码无法找到任何具有类'name'的对象时。
使用'.html()'使其正常工作。
答案 2 :(得分:0)
您可以使用以下内容更改replaceWith()
行:
$('.name').replaceWith("<span class='name'>"+$('.new-input').val()+"</span>");
replaceWith()
实际上替换了具有name
类的整个DOM元素。