我有一个下拉菜单,其中有几个。我正在写一些jQuery默认为登录用户的。问题是当我的某些文字过于相似时。
//this variable gets the branch name of the logged in user
var branchName = $(".logged-in-branch-name").text();
//this makes the dropdown select the correct branch for the logged in user
$("#branchcode option:contains('" + branchName + "')").prop('selected', true);
这一切都很好。除非文字相似。示例:
“大学1” “学院1-在线”
当变量branchName为“学院1”时,下拉菜单始终默认为“学院1-在线”。
当变量为“学院1-在线”时,它会正确转到“学院1-在线”下拉菜单。
是否有关于如何正确过滤这些内容的想法?
谢谢。
答案 0 :(得分:1)
检查绝对文本值,而不是包含。
$("#branchcode").find('option').each(function(){
if ($(this).text() === branchName)
{
$(this).prop('selected', true);
}
});
甚至
$("#branchcode").find('option').each(function(){
$(this).prop('selected', $(this).text() === branchName);
});
答案 1 :(得分:0)
交换此行:
$("#branchcode option:contains('" + branchName + "')").prop('selected', true);
对于此代码:
$("#branchcode option')
.filter(function () {
return $(this).text() === branchName;
})
.prop('selected', true);
您的代码存在的问题是,在您的案例中将“ :contains
”与“学院1”配合使用时,同时匹配“学院1” 和“学院1-在线”,我会假设(因为您未提供html)选择不多,所以最后一个匹配选项结束选择。
取决于您的html,您可能需要在option元素的文本之前或之后处理空格,只需在其中添加$ .trim即可。
return $.trim($(this).text()) === branchName;