Javascript 创建DOM';选项';带有'的元素;选定的';属性
为什么这段代码在jQuery1.5中可以正常工作,而在jQuery1.6中却不能?jquery在这两个版本之间创建DOM节点的方式是否有已知的变化Javascript 创建DOM';选项';带有'的元素;选定的';属性,javascript,jquery,Javascript,Jquery,为什么这段代码在jQuery1.5中可以正常工作,而在jQuery1.6中却不能?jquery在这两个版本之间创建DOM节点的方式是否有已知的变化 var birth = new Date(), current = new Date().getFullYear() - 13, year = $('select#year'), i = 0; birth.setFullYear(1992, 10, 3); while (i < 48) { var option
var birth = new Date(),
current = new Date().getFullYear() - 13,
year = $('select#year'),
i = 0;
birth.setFullYear(1992, 10, 3);
while (i < 48) {
var option = $('<option>', {
value: current - i,
text: current - i,
selected: (current - i === birth.getFullYear()) ? 'selected' : ''
});
year.append(option);
i++;
}
var birth=new Date(),
当前=新日期()。getFullYear()-13,
年份=$(“选择年份”),
i=0;
出生。整岁(1992年10月3日);
而(i<48){
变量选项=$('',{
值:当前-i,
文本:当前-i,
选中:(当前-i==birth.getFullYear())?“选中”:”
});
年份。追加(可选);
i++;
}
见和。第一个选项只选择一个选项,而第二个选项将selected=“selected”
添加到每个选项
注意,目前我只在Chrome中测试了这一点
selected: (current - i === birth.getFullYear()) ? 'selected' : ''
将产生
selected="selected"
或
在这两种情况下,浏览器都会将视为选中的
集。这是因为selected
是一个布尔值;它的存在表明它应该被选中
您应该使用jQuery 1.6中引入的:
var option = $('<option>', {
value: current - i,
text: current - i
}).prop('selected', current - i === birth.getFullYear());
var选项=$('',{
值:当前-i,
文本:当前-i
}).prop('selected',current-i==birth.getFullYear());
或者,如果您希望将所有内容都包含在对象中:
var option = $('<option>', {
value: current - i,
text: current - i,
selected: (current - i === birth.getFullYear())
});
var选项=$('',{
值:当前-i,
文本:当前-i,
选中:(当前-i==birth.getFullYear())
});
将产生
selected="selected"
或
在这两种情况下,浏览器都会将视为选中的
集。这是因为selected
是一个布尔值;它的存在表明它应该被选中
您应该使用jQuery 1.6中引入的:
var option = $('<option>', {
value: current - i,
text: current - i
}).prop('selected', current - i === birth.getFullYear());
var选项=$('',{
值:当前-i,
文本:当前-i
}).prop('selected',current-i==birth.getFullYear());
或者,如果您希望将所有内容都包含在对象中:
var option = $('<option>', {
value: current - i,
text: current - i,
selected: (current - i === birth.getFullYear())
});
var选项=$('',{
值:当前-i,
文本:当前-i,
选中:(当前-i==birth.getFullYear())
});
将else部分设置为false
var birth = new Date(),
current = new Date().getFullYear() - 13,
year = $('select#year'),
i = 0;
birth.setFullYear(1992, 10, 3);
while (i < 48) {
var option = $('<option>', {
value: current - i,
text: current - i,
selected: ((current - i) === (birth.getFullYear())) ? 'selected' :false
});
year.append(option);
i++;
}
var birth=new Date(),
当前=新日期()。getFullYear()-13,
年份=$(“选择年份”),
i=0;
出生。整岁(1992年10月3日);
而(i<48){
var选项=$(''{
值:当前-i,
文本:当前-i,
已选择:((当前-i)==(birth.getFullYear())?“已选择”:false
});
年份。追加(可选);
i++;
}
这是小提琴将else部分设置为false
var birth = new Date(),
current = new Date().getFullYear() - 13,
year = $('select#year'),
i = 0;
birth.setFullYear(1992, 10, 3);
while (i < 48) {
var option = $('<option>', {
value: current - i,
text: current - i,
selected: ((current - i) === (birth.getFullYear())) ? 'selected' :false
});
year.append(option);
i++;
}
var birth=new Date(),
当前=新日期()。getFullYear()-13,
年份=$(“选择年份”),
i=0;
出生。整岁(1992年10月3日);
而(i<48){
var选项=$(''{
值:当前-i,
文本:当前-i,
已选择:((当前-i)==(birth.getFullYear())?“已选择”:false
});
年份。追加(可选);
i++;
}
这是小提琴谢谢,这很有道理。是否有充分的理由使用第一个使用
prop
的解决方案来替代第二个只在对象中返回布尔值的解决方案?@Tauren:no。它们都一样。我把它放在那里是因为你想知道在1.5到1.6之间发生了什么变化。在1.6中,jQuery开始处理布尔值以及布尔值。所以你不能再把它设为空字符串了。谢谢,这很有意义。是否有充分的理由使用第一个使用prop
的解决方案来替代第二个只在对象中返回布尔值的解决方案?@Tauren:no。它们都一样。我把它放在那里是因为你想知道在1.5到1.6之间发生了什么变化。在1.6中,jQuery开始处理布尔值以及布尔值。所以不能再将其设置为空字符串。