HTML5属性操作:Vanilla JS与jQuery

时间:2016-10-13 02:18:20

标签: javascript jquery html5 input attributes

如何改变元素' 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');
    }
});

1 个答案:

答案 0 :(得分:6)

因为if($('#password').attr('type', 'password'))没有询问type属性是否为' password'。它将type = password和returning a jQuery object设置为if语句。

当.attr()仅与one parameter一起使用时,它会从所选元素中获取该属性,因此你可以使用$("#password").attr("type") == "password"来完成它。