我从jQuery的1.3.2升级到1.6.4,并发现了一些东西,在现有的代码不工作 -.attr()相关的东西在jquery升级1.3.2之后停止工作到1.6.4,还有什么可以打破的?
禁用的东西 -
$(selector).attr("disabled","");
察看单选按钮是否检查 -
if($(selector).attr('checked'))
我检查了版本发行版1.4,1.5和1.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)
更新
我还与适当与prop
更换attr
有点困惑。我已阅读.prop() vs .attr()和其他一些问题。我到目前为止所阅读的任何地方,在大多数情况下,我都需要这样做。但是哪些是少数情况呢?有人可以提供一些代码示例或情况吗?我如何在现有的代码中找到这种情况?它提到我也看过https://stackoverflow.com/a/6057122/351903说 -
你真的需要小心的就是不整个应用程序
待办事项混合相同属性 使用的这些事情我现在需要将attr
替换为prop
,以防这些线路工作正常吗?
$(selector).attr("id")
更新#2
假设在我现有的代码,我有一个像下面几行(我猜直接影响到UI控件的行为或状态),但目前还没有检查,看是否该元素被选中与否 -
这是有
$(selector).attr("checked","checked"); //setting
但是,这是不是有
if($(selector).attr("checked")) //checking
即使现在设置正在工作,我还应该在设置代码中将attr
更换为prop
吗?
更新#3
有没有从那里我能得到某种属性的列表,它直接影响到UI控件的某些属性的一些地方?我仍然困惑于决定用什么属性来替换属性。是否有其他人对这个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
与prop
- 在旧的代码后,没有更多的工作
$("#60table INPUT[type='checkbox']").attr('checked', $("#60").attr("checked")); //I replaced the attr by prop here
所以,我仍然得到新问题升级。
把赏金
因为 -
元素选择逻辑没有更多的工作 -我不知道是否有可能是有些不工作更加规范。以更新4为例,当输入的位置是
#60table > div > input
时,选择$("#60table INPUT[type='checkbox']")
这样的选择是不正确的。如果是这样,那么我的项目中可能存在的其他一些常见错误可能已经打破。更好地解释所有替换属性与prop -我需要更清楚地区分何时使用prop替代attr,以及更多示例。按照乔恩的答案 -
如果它直接影响到UI控件使用 道具的行为或状态;否则使用attr。
我在哪里可以得到某种属性的列表的直接影响UI部件
你应该用'.prop(“checked”,true)'替换'.attr(“checked”,“checked”)''。我不确定你的意思是“即使检查正在工作”。 – Jon 2012-04-17 09:15:17
对不起,我的意思是说即使设置正在工作 – 2012-04-17 09:19:53