【问题标题】:Migrating jQuery 1.8.3 to 1.9.0 - Replacing deprecated .attr()将 jQuery 1.8.3 迁移到 1.9.0 - 替换不推荐使用的 .attr()
【发布时间】:2013-01-30 11:21:28
【问题描述】:

我正在开发的一个网站是使用 jQuery v1.8.3 构建的。我正在尝试升级到 v1.9.0。使用 jQuery 迁移插件 (v.1.0.0),我在控制台中收到消息说 .attr() 已弃用。

在 .js 文件中使用了这两行:

var branchID = $('select#ddlBranches').attr('value');
$('select#ddlBranches').attr('value', branchID).change();

它们旨在获取下拉列表中当前选择的值(即记录 ID),并在下拉列表中触发更改事件,将其设置为指示值。

第一行在控制台中产生这条消息:“基于属性的 jQuery.fn.attr('value') is deprecated

第二行导致它在控制台中显示:“基于属性的 jQuery.fn.attr('value', val) 已弃用

Upgrade guide 讨论了 .attr(),但我没有看到任何地方提到替换它的内容。

我应该用什么替换 .attr() 来完成相同的功能?

感谢大家的帮助。

【问题讨论】:

    标签: upgrade jquery-1.9


    【解决方案1】:

    如果要获取/设置value,请使用.val() 函数:

    var branchID = $('select#ddlBranches').val();
    $('select#ddlBranches').val(branchID).change();
    

    【讨论】:

    • 谢谢,安东尼。这回答了我的问题,但我注意到我正在使用 attr() 在新窗口的锚标记上设置目标属性 ($(this).attr('target', '_blank');),但我没有在控制台中收到来自 Migrate 插件的消息。 1.9 文档似乎表明 .attr() 已完全弃用,因此我认为上述目标设置也会导致该消息。有什么想法为什么不呢?
    • .val() 既可以是 getter 也可以是 setter。 .attr() 没有被弃用,但并不意味着获取表单输入的动态、用户更改的值。设置像target 这样的普通属性是没有问题的。相比之下,select 元素上没有 value 属性(也就是说,您永远不会在 HTML 标记中编写 <select value="42">)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2021-07-31
    相关资源
    最近更新 更多