今天写前台代码时用到了select的option动态选择上一个下一个的问题,在这个过程中发现了一些坑:
在jQuery 1.6版本以后添加了jQuery.prop(),attr()方法和prop()方法是有区别的,感谢博主给本人解惑,下面是链接地址
博客园的一位大佬,链接在这里 废话不多说,上代码
原jQuery代码:
function nextbkcode(){
var bkcode = $("select[name='baokaocode'] option:selected");
var precode = bkcode.next();
if(precode.length>0){
bkcode.removeAttr("selected='selected'");
precode.attr("selected='selected');
}else{
alert("当前已是最后一个**");
return;
}
subform();
}
然后就悲剧了,在前台报了个异常
Uncaught DOMException: Failed to execute 'setAttribute' on 'Element': 'selected='selected'' is not a valid attribute name.
大概意思就是selected='selected'不是有效的属性名,查找了博主的文章后,将代码修改为一下代码
function nextbkcode(){
//选择当前选中option的jQuery对象
var bkcode = $("select[name='baokaocode'] option:selected");
//查找下一个option对象
var precode = bkcode.next();
//判断下一个对象是否为空,不能直接将对象放到条件里,这个jQuery对象不论是否为空,都会返回object,为true
if(precode.length>0){
bkcode.prop("selected",false);//此处移除selected属性
precode.prop("selected",true);//给下一个元素添加selected属性
}else{
alert("当前已是最后一个**");
return;
}
subform();
}
问题成功解决,也将其中的一个小坑注释写出来了,避免以后再跳