相信不少朋友都遇到了用jquery为select设置指定text的值为选中项这个问题,经过百度大家肯定也都搜到了如下类似的代码:
$(“#id”).find(“option[text=’***’]”).attr(“selected”, true);
有的同学利用这段代码解决了问题,而有的同学则发现这段代码根本不管用。这是为什么呢?
其实具体答案我也不知道,我百度也没有搜索出确切的答案。不过通过我的经验,我大概能判断出这可能是jquery的版本问题。因为这段代码我之前用确实是管用的,后来我更新过几次jquery的版本,由于更改版本的时候我没有发现这段代码到底是什么时候出现的问题的,我也忘记了一开始我引用的是哪个版本的jquery,所以我也不知道到底是从哪个版本起这段代码不能用了的。当然这是我的猜测,没有切实依据。
但是我们依然可以解决这个问题,有两种方法:一种是利用contains:
$(“#id”).find(“option:contains(‘***’)”).attr(“selected”, true);
这样一般是可行的,为什么说一般呢?因为contains是模糊匹配。比如:$(“#id”).find(“option:contains(‘河’)”).attr(“selected”, true);
那这两个都会被匹配出来。
我们可以对以上代码进行再加工,做到精准匹配:
$(‘#id option:contains(‘***’)’).each(function(){
if ($(this).text() == “***”) {
$(this).attr(‘selected’, true);
}
});
以上代码就是先进行一次模糊匹配,然后再进行精准匹配。当然我们也可以直接进行精准匹配:
$(“#id option”).each(function() {
if($(this).text()==”***”){
$(this).attr(‘selected’, true);
return;//加上return就是一旦匹配成功就结束循环,减少后面无味的循环次数
}
});
未经允许不得转载:前端撸码笔记 » jquery设置select的选中值问题