如何编写jQuery条件:判断另一下拉框选中项文本(非值)含指定内容
解决jQuery下拉框文本包含判断的问题
我来帮你修正这个条件判断逻辑!你当前的代码有个关键问题:jQuery选择器返回的对象永远是真值,哪怕没有匹配到任何元素,所以不管目标下拉框的选中内容是什么,alert都会触发。而且你的写法是检查整个下拉框是否包含"Bye"文本(所有选项里只要有就会匹配),但我们需要的是当前选中选项的文本是否包含指定字符串。
修正后的代码
$(".Selected_Two").change(function () { // 定位到同一父容器内的目标下拉框 const targetDropdown = $(this).closest('.div-block').find('.Selected'); // 获取下拉框当前选中选项的文本内容 const selectedOptionText = targetDropdown.find(':selected').text(); // 判断文本是否包含"Bye" if (selectedOptionText.includes("Bye")) { alert('Bye'); } });
关键细节说明
- 我们用
.find(':selected')精准获取下拉框的选中选项,再通过.text()拿到它的文本内容,而不是检查整个下拉框的所有选项。 - 使用原生的
includes()方法判断字符串包含关系,简洁直观。如果需要兼容IE这类旧浏览器,可以换成indexOf写法:if (selectedOptionText.indexOf("Bye") !== -1) { alert('Bye'); } - 原代码的
$('.Selected:contains("Bye")')逻辑错误:它会匹配所有包含"Bye"文本的.Selected下拉框(哪怕选中的不是这个选项),而且jQuery对象在条件判断中始终为真,导致判断失效。
内容的提问来源于stack exchange,提问作者John Siniger
相关产品推荐
相关产品推荐

