我从 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/的“数据属性的案例映射”部分中的一些内容。有人可以解释一下吗。
来源 -从 jQuery 1.3.2 升级到 jQuery 1.5(或 1.4)
更新
我仍然对适当替换attr
为prop
. 我已阅读.prop() 与 .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 小部件的某些属性?我仍然对决定哪些属性将 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 > input 而不是直接在 #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
所以,我仍然遇到新问题,旧代码在升级后不再工作。
放赏金
因为 -
元素选择器逻辑不再起作用 - 我不确定是否还有更多代码不起作用。以Update 4为例,当输入的位置是
#60table > div > input
,选择like是不是不正确$("#60table INPUT[type='checkbox']")
。如果是这样,我的项目中是否还有一些其他常见错误可能已经损坏。更好地解释在哪里用 prop 替换 attr -我需要更清楚地区分何时使用 prop 而不是 attr,并提供更多示例。根据乔恩的回答 -
如果它直接影响 UI 小部件的行为或状态,请使用 prop;否则使用 attr。
我在哪里可以获得某种属性列表,这些属性直接影响 UI 小部件的某些属性