jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.attr()相关的东西在jquery升级1.3.2到1.6.4之后停止工作,还有什么可以打破?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我从 jquery 1.3.2升级到1.6.4,发现现有代码中的一些东西不起作用 –

>禁用某些东西 –

$(选择).attr( “禁用”,“”);
>检查是否选中了单选按钮 –

如果($(选择).attr( ‘检查’))

我检查了版本发布1.4,1.51.6的向后兼容性,发现只提到问题#2但没有明确提到上面的问题#1.所以我担心问题#1,我可以发现现有代码的更多问题.我想在http://blog.jquery.com/2011/05/03/jquery-16-released/的“数据属性的案例映射”部分中遗漏了一些内容.有人可以解释一下.

来源 – Upgrading from jQuery 1.3.2 to jQuery 1.5 (or 1.4)

更新

我仍然很难用适当的替换attr与道具.我已阅读.prop() vs .attr()和其他一些问题.到目前为止,无论我在哪里阅读,它都说在大多数情况下我需要这样做.但那是少数案件呢?有人可以提供一些代码示例或情况吗?如何在现有代码中找到此类案例?我还读过https://stackoverflow.com/a/6057122/351903,其中提到 –

如果这样的线路现在工作正常,我是否需要更换attr?

$(SELEctor).attr("id")

更新#2
假设在我现有的代码中,我有像下面这样的行(我猜这会直接影响UI小部件的行为或状态),但是目前没有检查是否检查了该元素 –

就在那里

$(SELEctor).attr("checked","checked"); //setTing

但这不存在

if($(SELEctor).attr("checked")) //checking

我是否仍然应该在设置代码中将attr替换为prop,即使设置现在正在工作?

更新#3
是否有一些地方可以获得某种属性列表,这些属性直接影响UI小部件的某些属性?我仍然有困惑决定将attr替换为prop的属性.这个jquery版本的新手是否感觉相同或者我只有一个:D?

更新#4
看起来,在这两个版本(1.3.2到1.6.4)之间,jquery使元素选择更加严格.

细节
在模块中,具有以下HTML –

<div id="60table">
    <div>
        <input type="checKBox" id="60_1" value="1" name="data[reportsInfo][Campaign][2752]">
        <label for="60_1">23 apr new campaign 1</label>
    </div>
    <div>
        <input type="checKBox" id="60_2" value="1" name="data[reportsInfo][Campaign][2753]">
        <label for="60_2">23 apr new campaign 2</label>
    </div>
    <div>
        <input type="checKBox" id="60_3" value="1" name="data[reportsInfo][Campaign][2707]">
        <label for="60_3">2nd camp added</label>
    </div>
</div>

使用jquery 1.3.2,以下返回实际的输入计数 –

$("#60table INPUT[type='checkBox']").length

但是,现在使用jquery 1.6.4,上面返回0(注意输入的位置类似于#60table> div>输入而不是直接在#60table下).我必须做$(“#60table”).find(“INPUT [type =’checkBox’]”).length来获得正确的数字.

因此,以下现有代码升级后停止工作,即使我用支柱取代了attr –

$("#60table INPUT[type='checkBox']").attr('checked',$("#60").attr("checked")); //I replaced the attr by prop here

因此,我仍然遇到新问题,升级后旧代码不再有效.

投入赏金
因为 –

>元素选择器逻辑不再工作 – 我不确定是否可能有更多代码无效.以update 4为例,当输入的位置为#60table时> div>输入,选择像$(“#60table INPUT [type =’checkBox’]”)是不正确的.如果是这样,我的项目中可能存在其他一些可能已经破裂的常见错误.
>更好地解释所有用prop替换attr的地方 – 我需要更明确地区分何时使用prop而不是attr,以及更多示例.根据乔的回答 –

我在哪里可以获得某种属性列表,这些属性直接影响UI小部件的某些属性

解决方法@H_419_98@
这个问题与数据属性的案例映射无关,这仅仅是由于属性/属性API的演变:

至于缺少其他相关的重大变化,它应该足以搜索您的代码以使用attr并适当地替换为prop;鉴于attr倾向于在大多数时间使用,通常应该替换大多数调用.

更新:让我们适当地定义.

关键的想法是元素具有HTML属性:< input name =“foo”disabled>具有属性id和禁用; id有一个值,而disabled则没有.其中一个属性直接影响UI窗口小部件的属性,浏览器将其呈现为表示此元素(在桌面应用程序控件的意义上,输入框被禁用).所以经验法则是:

在您提到的示例中,id是一个抽象数量,不会直接影响任何元素的行为或状态;因此你应该继续使用attr.

更新2:

是的,你应该因为jQuery的文档这么说.正如你在前面提到的那样,混合prop和attr会导致问题行为.

更新3:

并不是的.这里适用的经验法则是,如果某个东西是布尔值,则prop很可能是访问它的正确方法.

更新4:

@R_616_10021@是Sizzle,它负责解析选择器中的匹配元素(jQuery comes with Sizzle built-in).我不知道改变行为的原因是什么变化,但罪魁祸首是你的id以一个数字开头. This is not valid HTML 4.01,但由于某种原因,它也会对Sizzle产生影响.解决方法很简单:不要用数字开始你的id.

您发现的其他解决方法(将选择器拆分为两个并使用.find)是有效的,因为在特殊情况下,选择器的形式为#id,jQuery directly calls getElementById而不是调用Sizzle.

大佬总结

以上是大佬教程为你收集整理的.attr()相关的东西在jquery升级1.3.2到1.6.4之后停止工作,还有什么可以打破?全部内容,希望文章能够帮你解决.attr()相关的东西在jquery升级1.3.2到1.6.4之后停止工作,还有什么可以打破?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。