javascript - HTML5 属性操作 : Vanilla JS vs. jQuery

标签 javascript jquery html input attributes

为什么在 vanilla JS 和 jQuery 中更改元素的属性值有时效果不一样?一种情况是我创建的实验,每当单击“显示密码”按钮时,密码字段的 type属性值应该更改为 text当它是password时,反之亦然。它在 vanilla JS 中成功运行,但在 jQuery 中失败。在 jQuery 中,属性值更改为 text ,但是当我想将其改回 password 时,它不会起作用。为什么会出现这样的问题?

普通 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');
    }
});

最佳答案

因为 if($('#password').attr('type', 'password')) 不会询问 type 属性是否为“password”。它设置 type=password 和 returning a jQuery object到 if 语句。

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

关于javascript - HTML5 属性操作 : Vanilla JS vs. jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40011227/

相关文章:

javascript - 替换两个标记之间的 URL 中的 ID

javascript - ES6中如何扩展从父类继承的类属性?

javascript - 异步/等待矫枉过正?我是否不必要地使用异步和等待?

javascript - 类型错误 : Cannot read properties of undefined (reading 'preventDefault' ) React

javascript - jQuery 从一个 div 中选择每个元素并粘贴到另一个元素中

php - 使用 onclick 方法获取 $this 行并填充 Web 表单

javascript - 将标签添加到选择框 (<select>)?

html - 使用 flex : one left and one right 将两个元素对齐在同一行

java - JLabel HTML 呈现的奇怪问题

JavaScript 无法在 Grails/GSP 中运行