如何改变元素' vanilla JS和jQuery中的属性值有时候不一样吗?一种情况是我创建的实验,无论什么时候显示密码"正在点击按钮,密码字段的type
属性值在text
时应更改为password
,反之亦然。它在vanilla JS中成功运行,但在jQuery中却没有。在jQuery中,属性值更改为text
,但是当我想将其更改回password
时,它将无法正常工作。为什么会出现这样的问题?
Vanilla JS
document.querySelector('.show-password').onclick = function() {
if(document.querySelector('#password').type == 'password') {
document.querySelector('#password').type = 'text';
} else {
document.querySelector('#password').type = 'password';
}
}
的jQuery
$('.show-password').click(function() {
if($('#password').attr('type', 'password')) {
$('#password').attr('type', 'text');
} else {
$('#password').attr('type', 'password');
}
});
答案 0 :(得分:6)
因为if($('#password').attr('type', 'password'))
没有询问type属性是否为' password'。它将type = password和returning a jQuery object设置为if语句。
当.attr()仅与one parameter一起使用时,它会从所选元素中获取该属性,因此你可以使用$("#password").attr("type") == "password"
来完成它。